View difference between Paste ID: VRLi1Hrr and tmBiL0Va
SHOW: | | - or go back to the newest paste.
1
--MADE BY OneLegend (NOT THE SCRIPT) Thanks to CyberFromLU for letting me Publish! REGULAR SCRIPT: Go to line 3 and 1607 put your name where it says "YOUR NAME HERE"
2
-------------------------------------------------------------------
3-
Player = script:FindFirstChild("Player") ~= nil and script.Player.Value or game:GetService("Players"):FindFirstChild("DarkHearth3") --Replace my name with yours for the RPG to work.
3+
Player = script:FindFirstChild("Player") ~= nil and script.Player.Value or game:GetService("Players"):FindFirstChild("TheOfficalNoob4788") --Replace my name with yours for the RPG to work.
4
Name = "mogoon" --Sets name of the RPG.
5
selected = true
6
canDual = false
7
dual = false
8
Button1Down = false
9
damage = 100 --Sets damage also.
10
canFire = true
11
canFire2 = false
12
readyTime = 0.5
13
automatic = false
14
burst = false
15
burstCount = 0
16
burstCountMax = 3
17
canSilence = false
18
silenced = false
19
canZoom = true
20
zoom = false
21
switchToSingle = true
22
switchToBurst = true
23
switchToAutomatic = false
24
25
26
ammoGui = Instance.new("ScreenGui")
27
ammoGui.Name = Name
28
local frame = Instance.new("Frame")
29
frame.Name = "Frame"
30
frame.Size = UDim2.new(0, 165, 0, 60)
31
frame.Position = UDim2.new(0, 0, 1, -60)
32
frame.BackgroundColor3 = Color3.new(1, 1, 1)
33
frame.BorderColor3 = Color3.new(0, 0, 0)
34
frame.Parent = ammoGui
35
local label = Instance.new("TextLabel")
36
label.Name = "Weapon"
37
label.Text = "Weapon: " ..Name
38
label.Size = UDim2.new(1, 0, 0, 20)
39
label.Position = UDim2.new(0, 0, 0, 0)
40
label.BackgroundColor3 = Color3.new(1, 0, 0)
41
label.BorderColor3 = Color3.new(0, 0, 0)
42
label.Parent = frame
43
local label = Instance.new("TextLabel")
44
label.Name = "MagazinePrefix"
45
label.Text = "    Magazine:"
46
label.TextXAlignment = "Left"
47
label.Size = UDim2.new(1, 0, 0, 20)
48
label.Position = UDim2.new(0, 0, 0, 20)
49
label.BackgroundColor3 = Color3.new(1, 1, 1)
50
label.BorderColor3 = Color3.new(0, 0, 0)
51
label.Parent = frame
52
local label = Instance.new("TextLabel")
53
label.Name = "Magazine"
54
label.Text = "0/0"
55
label.TextXAlignment = "Right"
56
label.Size = UDim2.new(1, 0, 0, 20)
57
label.Position = UDim2.new(0, -10, 0, 20)
58
label.BackgroundTransparency = 1
59
label.BorderSizePixel = 0
60
label.Parent = frame
61
local label = Instance.new("TextLabel")
62
label.Name = "AmmoPrefix"
63
label.Text = "    Ammunition:"
64
label.TextXAlignment = "Left"
65
label.Size = UDim2.new(1, 0, 0, 20)
66
label.Position = UDim2.new(0, 0, 0, 40)
67
label.BackgroundColor3 = Color3.new(1, 1, 1)
68
label.BorderColor3 = Color3.new(0, 0, 0)
69
label.Parent = frame
70
local label = Instance.new("TextLabel")
71
label.Name = "Ammo"
72
label.Text = "0/0"
73
label.TextXAlignment = "Right"
74
label.Size = UDim2.new(1, 0, 0, 20)
75
label.Position = UDim2.new(0, -10, 0, 40)
76
label.BackgroundTransparency = 1
77
label.BorderSizePixel = 0
78
label.Parent = frame
79
80
81
function updateGui()
82
	if selected == false then return end
83
	if Player:FindFirstChild("PlayerGui") == nil then Instance.new("PlayerGui").Parent = Player end
84
	if Player.PlayerGui:FindFirstChild(Name) == nil then
85
		ammoGui:Clone().Parent = Player.PlayerGui
86
	end
87
	Player.PlayerGui[Name].Frame.Magazine.Text = tostring(magazine.Value).. "/" ..tostring(magazineMax.Value)
88
	Player.PlayerGui[Name].Frame.Ammo.Text = tostring(ammo.Value).. "/" ..tostring(ammoMax.Value)
89
end
90
91
92
function makeParts(format)
93
	local model = Instance.new("Model")
94
	model.Name = Name
95
	local pm = Instance.new("Part")
96
	pm.Name = "Handle"
97
	pm.FormFactor = "Custom"
98
	pm.Size = Vector3.new(1, 1, 1)
99
	pm.BrickColor = BrickColor.new("Black")
100
	pm.Locked = true
101
	pm.TopSurface = 0
102
	pm.BottomSurface = 0
103
	pm.Parent = model
104
	local m = Instance.new("CylinderMesh")
105
	m.Scale = Vector3.new(0.35, 1.5, 0.35)
106
	m.Parent = pm
107
	if format ~= nil then
108
		local w = Instance.new("Weld")
109
		w.Part0 = pm
110
		if format == "RightHand" then
111
			w.Part1 = Player.Character:FindFirstChild("Right Arm")
112
			w.C0 = CFrame.new(0, 1.5, 0.75)
113
			w.C1 = CFrame.new()
114
		elseif format == "RightHolster" then
115
			w.Part1 = Player.Character:FindFirstChild("Torso")
116
			w.C0 = CFrame.new(-0.65, 1, 0) * CFrame.fromEulerAnglesXYZ(math.rad(185), math.rad(90), 0)
117
			w.C1 = CFrame.new()
118
			model.Name = Name.. " (Holstered)"
119
		end
120
		w.Parent = pm
121
		model.Parent = Player.Character
122
	end
123
	--[[
124
	sniper1  http://www.roblox.com/Asset/?id=1868836
125
	equip    http://www.roblox.com/Asset/?id=13510737
126
	fire1     http://www.roblox.com/Asset/?id=2760979
127
	fire2    http://www.roblox.com/Asset/?id=13510352
128
	fire3    http://www.roblox.com/Asset/?id=2692806
129
	fire4    http://www.roblox.com/Asset/?id=2691586
130
	fire5    http://www.roblox.com/Asset/?id=2920959
131
	fire6    http://www.roblox.com/Asset/?id=2697431
132
	fire7    http://www.roblox.com/Asset/?id=2920959
133
	reload1   http://www.roblox.com/Asset/?id=2691591
134
	reload2   http://www.roblox.com/Asset/?id=2697432
135
	reload3  http://www.roblox.com/Asset/?id=2920960
136
	reload4  http://www.roblox.com/Asset/?id=2761842
137
	shotgun1 http://www.roblox.com/Asset/?id=2697294
138
	--]]
139
	local s = Instance.new("Sound")
140
	s.Name = "Equip"
141
	s.SoundId = "http://www.roblox.com/Asset/?id=10209881"
142
	s.Volume = 1
143
	s.Pitch = 1
144
	s.Looped = false
145
	s.Parent = pm
146
	local s = Instance.new("Sound")
147
	s.Name = "Fire"
148
	s.SoundId = "rbxasset://sounds/Shoulder fired rocket.wav"
149
	s.Volume = 1
150
	s.Pitch = 1.25
151
	s.Looped = false
152
	s.Parent = pm
153
	local s = Instance.new("Sound")
154
	s.Name = "Reload"
155
	s.SoundId = "http://www.roblox.com/Asset/?id=2691591"
156
	s.Volume = 1
157
	s.Pitch = 1.25
158
	s.Looped = false
159
	s.Parent = pm
160
	local s = Instance.new("Sound")
161
	s.Name = "Empty"
162
	s.SoundId = "http://www.roblox.com/Asset/?id=2697295"
163
	s.Volume = 1
164
	s.Pitch = 5
165
	s.Looped = false
166
	s.Parent = pm
167
	local s = Instance.new("Sound")
168
	s.Name = "Switch"
169
	s.SoundId = "http://www.roblox.com/Asset/?id=2697295"
170
	s.Volume = 1
171
	s.Pitch = 10
172
	s.Looped = false
173
	s.Parent = pm
174
	local p = Instance.new("Part")
175
	p.Name = "Grip / Trigger Housing"
176
	p.FormFactor = "Custom"
177
	p.Size = Vector3.new(1, 1, 1)
178
	p.BrickColor = BrickColor.new("Black")
179
	p.Locked = true
180
	p.TopSurface = 0
181
	p.BottomSurface = 0
182
	p.Parent = model
183
	local m = Instance.new("SpecialMesh")
184
	m.MeshType = "Brick"
185
	m.Scale = Vector3.new(0.29, 0.75, 0.1)
186
	m.Parent = p
187
	local w = Instance.new("Weld")
188
	w.Part0 = p
189
	w.Part1 = pm
190
	w.C0 = CFrame.new(0, -0.2, -0.15)
191
	w.C1 = CFrame.new()
192
	w.Parent = p
193
	local p = Instance.new("Part")
194
	p.Name = "Grip 1"
195
	p.FormFactor = "Custom"
196
	p.Size = Vector3.new(1, 1, 1)
197
	p.BrickColor = BrickColor.new("Black")
198
	p.Locked = true
199
	p.TopSurface = 0
200
	p.BottomSurface = 0
201
	p.Parent = model
202
	local m = Instance.new("SpecialMesh")
203
	m.MeshType = "Brick"
204
	m.Scale = Vector3.new(0.29, 0.35, 0.9)
205
	m.Parent = p
206
	local w = Instance.new("Weld")
207
	w.Part0 = p
208
	w.Part1 = pm
209
	w.C0 = CFrame.new(0, -0.4, -0.65)
210
	w.C1 = CFrame.new()
211
	w.Parent = p
212
	local p = Instance.new("Part")
213
	p.Name = "Grip 2"
214
	p.FormFactor = "Custom"
215
	p.Size = Vector3.new(1, 1, 1)
216
	p.BrickColor = BrickColor.new("Reddish brown")
217
	p.Material = "Wood"
218
	p.Locked = true
219
	p.TopSurface = 0
220
	p.BottomSurface = 0
221
	p.Parent = model
222
	local m = Instance.new("SpecialMesh")
223
	m.MeshType = "Brick"
224
	m.Scale = Vector3.new(0.29, 0.35, 0.8)
225
	m.Parent = p
226
	local w = Instance.new("Weld")
227
	w.Part0 = p
228
	w.Part1 = pm
229
	w.C0 = CFrame.new(0, -1.1, -0.575)
230
	w.C1 = CFrame.new()
231
	w.Parent = p
232
	local p = Instance.new("Part")
233
	p.Name = "Trigger Housing 1"
234
	p.FormFactor = "Custom"
235
	p.Size = Vector3.new(1, 1, 1)
236
	p.BrickColor = BrickColor.new("Black")
237
	p.Locked = true
238
	p.TopSurface = 0
239
	p.BottomSurface = 0
240
	p.Parent = model
241
	local m = Instance.new("SpecialMesh")
242
	m.MeshType = "Brick"
243
	m.Scale = Vector3.new(0.1, 0.25, 0.025)
244
	m.Parent = p
245
	local w = Instance.new("Weld")
246
	w.Part0 = p
247
	w.Part1 = pm
248
	w.C0 = CFrame.new(0, -0.1, -0.5)
249
	w.C1 = CFrame.new()
250
	w.Parent = p
251
	local p = Instance.new("Part")
252
	p.Name = "Trigger Housing 2"
253
	p.FormFactor = "Custom"
254
	p.Size = Vector3.new(1, 1, 1)
255
	p.BrickColor = BrickColor.new("Black")
256
	p.Locked = true
257
	p.TopSurface = 0
258
	p.BottomSurface = 0
259
	p.Parent = model
260
	local m = Instance.new("SpecialMesh")
261
	m.MeshType = "Brick"
262
	m.Scale = Vector3.new(0.1, 0.025, 0.3)
263
	m.Parent = p
264
	local w = Instance.new("Weld")
265
	w.Part0 = p
266
	w.Part1 = pm
267
	w.C0 = CFrame.new(0, 0.01, -0.35)
268
	w.C1 = CFrame.new()
269
	w.Parent = p
270
	local p = Instance.new("Part")
271
	p.Name = "Trigger"
272
	p.FormFactor = "Custom"
273
	p.Size = Vector3.new(1, 1, 1)
274
	p.BrickColor = BrickColor.new("Black")
275
	p.Locked = true
276
	p.TopSurface = 0
277
	p.BottomSurface = 0
278
	p.Parent = model
279
	local m = Instance.new("SpecialMesh")
280
	m.MeshType = "Brick"
281
	m.Scale = Vector3.new(0.1, 0.05, 0.15)
282
	m.Parent = p
283
	local w = Instance.new("Weld")
284
	w.Part0 = p
285
	w.Part1 = pm
286
	w.C0 = CFrame.new(0, -0.11, -0.275)
287
	w.C1 = CFrame.new()
288
	w.Parent = p
289
	local p = Instance.new("Part")
290
	p.Name = "Center 1"
291
	p.FormFactor = "Custom"
292
	p.Size = Vector3.new(1, 1, 1)
293
	p.BrickColor = BrickColor.new("Black")
294
	p.Locked = true
295
	p.TopSurface = 0
296
	p.BottomSurface = 0
297
	p.Parent = model
298
	local m = Instance.new("CylinderMesh")
299
	m.Scale = Vector3.new(0.4, 0.5, 0.4)
300
	m.Parent = p
301
	local w = Instance.new("Weld")
302
	w.Part0 = p
303
	w.Part1 = pm
304
	w.C0 = CFrame.new(0, -1, 0)
305
	w.C1 = CFrame.new()
306
	w.Parent = p
307
	local p = Instance.new("Part")
308
	p.Name = "Center 2"
309
	p.FormFactor = "Custom"
310
	p.Size = Vector3.new(1, 1, 1)
311
	p.BrickColor = BrickColor.new("Reddish brown")
312
	p.Material = "Wood"
313
	p.Locked = true
314
	p.TopSurface = 0
315
	p.BottomSurface = 0
316
	p.Parent = model
317
	local m = Instance.new("CylinderMesh")
318
	m.Scale = Vector3.new(0.45, 1, 0.45)
319
	m.Parent = p
320
	local w = Instance.new("Weld")
321
	w.Part0 = p
322
	w.Part1 = pm
323
	w.C0 = CFrame.new(0, -1.75, 0)
324
	w.C1 = CFrame.new()
325
	w.Parent = p
326
	local p = Instance.new("Part")
327
	p.Name = "Center 3"
328
	p.FormFactor = "Custom"
329
	p.Size = Vector3.new(1, 1, 1)
330
	p.BrickColor = BrickColor.new("Reddish brown")
331
	p.Material = "Wood"
332
	p.Locked = true
333
	p.TopSurface = 0
334
	p.BottomSurface = 0
335
	p.Parent = model
336
	local m = Instance.new("SpecialMesh")
337
	m.MeshType = "FileMesh"
338
	m.MeshId = "http://www.roblox.com/Asset/?id=1778999"
339
	m.Scale = Vector3.new(0.335, 0.45, 0.335)
340
	m.Parent = p
341
	local w = Instance.new("Weld")
342
	w.Part0 = p
343
	w.Part1 = pm
344
	w.C0 = CFrame.new(0, -2.6225, 0)
345
	w.C1 = CFrame.new()
346
	w.Parent = p
347
	local p = Instance.new("Part")
348
	p.Name = "Center 4"
349
	p.FormFactor = "Custom"
350
	p.Size = Vector3.new(1, 1, 1)
351
	p.BrickColor = BrickColor.new("Reddish brown")
352
	p.Material = "Wood"
353
	p.Locked = true
354
	p.TopSurface = 0
355
	p.BottomSurface = 0
356
	p.Parent = model
357
	local m = Instance.new("CylinderMesh")
358
	m.Scale = Vector3.new(0.325, 1.25, 0.325)
359
	m.Parent = p
360
	local w = Instance.new("Weld")
361
	w.Part0 = p
362
	w.Part1 = pm
363
	w.C0 = CFrame.new(0, -3, 0)
364
	w.C1 = CFrame.new()
365
	w.Parent = p
366
	local p = Instance.new("Part")
367
	p.Name = "End 1"
368
	p.FormFactor = "Custom"
369
	p.Size = Vector3.new(1, 1, 1)
370
	p.BrickColor = BrickColor.new("Black")
371
	p.CanCollide = false
372
	p.Locked = true
373
	p.TopSurface = 0
374
	p.BottomSurface = 0
375
	p.Parent = model
376
	local m = Instance.new("CylinderMesh")
377
	m.Scale = Vector3.new(0.31, 0.1, 0.31)
378
	m.Parent = p
379
	local w = Instance.new("Weld")
380
	w.Part0 = p
381
	w.Part1 = pm
382
	w.C0 = CFrame.new(0, -3.625, 0)
383
	w.C1 = CFrame.new()
384
	w.Parent = p
385
	local p = Instance.new("Part")
386
	p.Name = "End 2"
387
	p.FormFactor = "Custom"
388
	p.Size = Vector3.new(1, 1, 1)
389
	p.BrickColor = BrickColor.new("Black")
390
	p.CanCollide = false
391
	p.Locked = true
392
	p.TopSurface = 0
393
	p.BottomSurface = 0
394
	p.Parent = model
395
	local m = Instance.new("SpecialMesh")
396
	m.MeshType = "FileMesh"
397
	m.MeshId = "http://www.roblox.com/Asset/?id=1778999"
398
	m.Scale = Vector3.new(0.425, 0.875, 0.425)
399
	m.Parent = p
400
	local w = Instance.new("Weld")
401
	w.Part0 = p
402
	w.Part1 = pm
403
	w.C0 = CFrame.new(0, 3.61, 0) * CFrame.fromEulerAnglesXYZ(math.rad(180), 0, 0)
404
	w.C1 = CFrame.new()
405
	w.Parent = p
406
	local f = Instance.new("Fire")
407
	f.Enabled = false
408
	f.Name = "Fire"
409
	f.Color = Color3.new(1, 0.5, 0)
410
	f.SecondaryColor = Color3.new(1, 0.75, 0.5)
411
	f.Heat = -25
412
	f.Size = 5
413
	f.Parent = p
414
	local s = Instance.new("Smoke")
415
	s.Enabled = false
416
	s.Name = "Smoke"
417
	s.Opacity = 0.5
418
	s.Color = Color3.new(0.8, 0.8, 0.8)
419
	s.RiseVelocity = -10
420
	s.Size = 5
421
	s.Parent = p
422
	local p = Instance.new("Part")
423
	p.Name = "Muzzle"
424
	p.FormFactor = "Custom"
425
	p.Size = Vector3.new(1, 1, 1)
426
	p.Transparency = 1
427
	p.CanCollide = false
428
	p.Locked = true
429
	p.Parent = model
430
	local w = Instance.new("Weld")
431
	w.Part0 = p
432
	w.Part1 = pm
433
	w.C0 = CFrame.new(0, 0.26, 0)
434
	w.C1 = CFrame.new()
435
	w.Parent = p
436
	local f = Instance.new("Fire")
437
	f.Enabled = false
438
	f.Name = "Fire"
439
	f.Color = Color3.new(1, 0.5, 0)
440
	f.SecondaryColor = Color3.new(1, 0.75, 0.5)
441
	f.Heat = -25
442
	f.Size = 2.5
443
	f.Parent = p
444
	local s = Instance.new("Smoke")
445
	s.Enabled = false
446
	s.Name = "Smoke"
447
	s.Opacity = 0.3
448
	s.Color = Color3.new(0.8, 0.8, 0.8)
449
	s.RiseVelocity = -10
450
	s.Size = 2.5
451
	s.Parent = p
452
	local pm2 = Instance.new("Part")
453
	if magazine.Value <= 0 then pm2.Transparency = 1 end
454
	pm2.Name = "Projectile"
455
	pm2.FormFactor = "Custom"
456
	pm2.Size = Vector3.new(1, 1, 1)
457
	pm2.BrickColor = BrickColor.new("Bright red")
458
	pm2.CanCollide = false
459
	pm2.Locked = true
460
	pm2.TopSurface = 0
461
	pm2.BottomSurface = 0
462
	pm2.Parent = model
463
	local m = Instance.new("CylinderMesh")
464
	m.Scale = Vector3.new(0.2, 1, 0.2)
465
	m.Parent = pm2
466
	local w = Instance.new("Weld")
467
	w.Part0 = pm2
468
	w.Part1 = pm
469
	w.C0 = CFrame.new(0, 0.3, 0)
470
	w.C1 = CFrame.new()
471
	w.Parent = pm2
472
	local f = Instance.new("Fire")
473
	f.Enabled = false
474
	f.Name = "Fire"
475
	f.Color = Color3.new(1, 0.5, 0)
476
	f.SecondaryColor = Color3.new(1, 0.75, 0.5)
477
	f.Heat = 25
478
	f.Size = 1
479
	f.Parent = pm2
480
	local s = Instance.new("Smoke")
481
	s.Enabled = false
482
	s.Name = "Smoke"
483
	s.Opacity = 0.25
484
	s.Color = Color3.new(0.8, 0.8, 0.8)
485
	s.RiseVelocity = 10
486
	s.Size = 5
487
	s.Parent = pm2
488
	local p = Instance.new("Part")
489
	if magazine.Value <= 0 then p.Transparency = 1 end
490
	p.Name = "Projectile Center 1"
491
	p.FormFactor = "Custom"
492
	p.Size = Vector3.new(1, 1, 1)
493
	p.BrickColor = BrickColor.new("Bright red")
494
	p.CanCollide = false
495
	p.Locked = true
496
	p.TopSurface = 0
497
	p.BottomSurface = 0
498
	p.Parent = model
499
	local m = Instance.new("SpecialMesh")
500
	m.MeshType = "FileMesh"
501
	m.MeshId = "http://www.roblox.com/Asset/?id=1033714" --http://www.roblox.com/Asset/?id=1778999
502
	m.Scale = Vector3.new(0.25, 1.25, 0.25)
503
	m.Parent = p
504
	local w = Instance.new("Weld")
505
	w.Part0 = p
506
	w.Part1 = pm2
507
	w.C0 = CFrame.new(0, 0.65, 0)
508
	w.C1 = CFrame.new()
509
	w.Parent = p
510
	local p = Instance.new("Part")
511
	if magazine.Value <= 0 then p.Transparency = 1 end
512
	p.Name = "Projectile Center 2"
513
	p.FormFactor = "Custom"
514
	p.Size = Vector3.new(1, 1, 1)
515
	p.BrickColor = BrickColor.new("Bright red")
516
	p.CanCollide = false
517
	p.Locked = true
518
	p.TopSurface = 0
519
	p.BottomSurface = 0
520
	p.Parent = model
521
	local m = Instance.new("SpecialMesh")
522
	m.MeshType = "FileMesh"
523
	m.MeshId = "http://www.roblox.com/Asset/?id=1033714" --http://www.roblox.com/Asset/?id=1778999
524
	m.Scale = Vector3.new(0.25, 1.1, 0.25)
525
	m.Parent = p
526
	local w = Instance.new("Weld")
527
	w.Part0 = p
528
	w.Part1 = pm2
529
	w.C0 = CFrame.new(0, -1.53, 0) * CFrame.fromEulerAnglesXYZ(math.rad(180), 0, 0)
530
	w.C1 = CFrame.new()
531
	w.Parent = p
532
	local p = Instance.new("Part")
533
	if magazine.Value <= 0 then p.Transparency = 1 end
534
	p.Name = "Projectile Tip"
535
	p.FormFactor = "Custom"
536
	p.Size = Vector3.new(1, 1, 1)
537
	p.BrickColor = BrickColor.new("Bright red")
538
	p.CanCollide = false
539
	p.Locked = true
540
	p.TopSurface = 0
541
	p.BottomSurface = 0
542
	p.Parent = model
543
	local m = Instance.new("CylinderMesh")
544
	m.Scale = Vector3.new(0.1, 0.1, 0.1)
545
	m.Parent = p
546
	local w = Instance.new("Weld")
547
	w.Part0 = p
548
	w.Part1 = pm2
549
	w.C0 = CFrame.new(0, 1.89, 0)
550
	w.C1 = CFrame.new()
551
	w.Parent = p
552
	return model
553
end
554
555
556
function removeParts(format)
557
	if format == "RightHand" then
558
		pcall(function() Player.Character[Name]:Remove() end)
559
	elseif format == "LeftHand" then
560
		pcall(function() Player.Character[Name.. " (Left)"]:Remove() end)
561
	elseif format == "RightHolster" then
562
		pcall(function() Player.Character[Name.. " (Holstered)"]:Remove() end)
563
	elseif format == "LeftHolster" then
564
		pcall(function() Player.Character[Name.. " (Holstered, Left)"]:Remove() end)
565
	end
566
end
567
568
569
function SetAngle(Joint, Angle, Character)
570
	if Character == nil then return false end
571
	local Joints = {
572
		Character.Torso:FindFirstChild("Right Shoulder 2"),
573
		Character.Torso:FindFirstChild("Left Shoulder 2"),
574
		Character.Torso:FindFirstChild("Right Hip 2"),
575
		Character.Torso:FindFirstChild("Left Hip 2")
576
	}
577
	if Joints[Joint] == nil then return false end
578
	if Joint == 1 or Joint == 3 then
579
		Joints[Joint].DesiredAngle = Angle
580
	end
581
	if Joint == 2 or Joint == 4 then
582
		Joints[Joint].DesiredAngle = -Angle
583
	end
584
end
585
586
587
function ForceAngle(Joint, Angle, Character)
588
	if Character == nil then return false end
589
	local Joints = {
590
		Character.Torso:FindFirstChild("Right Shoulder 2"),
591
		Character.Torso:FindFirstChild("Left Shoulder 2"),
592
		Character.Torso:FindFirstChild("Right Hip 2"),
593
		Character.Torso:FindFirstChild("Left Hip 2")
594
	}
595
	if Joints[Joint] == nil then return false end
596
	if Joint == 1 or Joint == 3 then
597
		Joints[Joint].DesiredAngle = Angle
598
		Joints[Joint].CurrentAngle = Angle
599
	end
600
	if Joint == 2 or Joint == 4 then
601
		Joints[Joint].DesiredAngle = -Angle
602
		Joints[Joint].CurrentAngle = -Angle
603
	end
604
end
605
606
607
function SetSpeed(Joint, Speed, Character)
608
	if Character == nil then return false end
609
	local Joints = {
610
		Character.Torso:FindFirstChild("Right Shoulder 2"),
611
		Character.Torso:FindFirstChild("Left Shoulder 2"),
612
		Character.Torso:FindFirstChild("Right Hip 2"),
613
		Character.Torso:FindFirstChild("Left Hip 2")
614
	}
615
	if Joints[Joint] == nil then return false end
616
	Joints[Joint].MaxVelocity = Speed
617
end
618
619
620
function DisableLimb(Limb, Character)
621
	if Character == nil then return false end
622
	if Character:FindFirstChild("Torso") == nil then return false end
623
	local Joints = {
624
		Character.Torso:FindFirstChild("Right Shoulder"),
625
		Character.Torso:FindFirstChild("Left Shoulder"),
626
		Character.Torso:FindFirstChild("Right Hip"),
627
		Character.Torso:FindFirstChild("Left Hip")
628
	}
629
	local Limbs = {
630
		Character:FindFirstChild("Right Arm"),
631
		Character:FindFirstChild("Left Arm"),
632
		Character:FindFirstChild("Right Leg"),
633
		Character:FindFirstChild("Left Leg")
634
	}
635
	if Joints[Limb] == nil then return false end
636
	if Limbs[Limb] == nil then return false end
637
	local Joint = Instance.new("Motor")
638
	Joint.Parent = Character.Torso
639
	Joint.Part0 = Character.Torso
640
	Joint.Part1 = Limbs[Limb]
641
	if Limb == 1 then
642
		Joint.C0 = CFrame.new(1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0)
643
		Joint.C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0)
644
		Joint.Name = "Right Shoulder 2"
645
	elseif Limb == 2 then
646
		Joint.C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
647
		Joint.C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
648
		Joint.Name = "Left Shoulder 2"
649
	elseif Limb == 3 then
650
		Joint.C0 = CFrame.new(0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0)
651
		Joint.C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0)
652
		Joint.Name = "Right Hip 2"
653
	elseif Limb == 4 then
654
		Joint.C0 = CFrame.new(-0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
655
		Joint.C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
656
		Joint.Name = "Left Hip 2"
657
	end
658
	Joint.MaxVelocity = Joints[Limb].MaxVelocity
659
	Joint.CurrentAngle = Joints[Limb].CurrentAngle
660
	Joint.DesiredAngle = Joints[Limb].DesiredAngle
661
	Joints[Limb]:Remove()
662
end
663
664
665
function ResetLimbCFrame(Limb, Character)
666
	if Character == nil then return false end
667
	if Character.Parent == nil then return false end
668
	if Character:FindFirstChild("Torso") == nil then return false end
669
	local Joints = {
670
		Character.Torso:FindFirstChild("Right Shoulder 2"),
671
		Character.Torso:FindFirstChild("Left Shoulder 2"),
672
		Character.Torso:FindFirstChild("Right Hip 2"),
673
		Character.Torso:FindFirstChild("Left Hip 2")
674
	}
675
	local Limbs = {
676
		Character:FindFirstChild("Right Arm"),
677
		Character:FindFirstChild("Left Arm"),
678
		Character:FindFirstChild("Right Leg"),
679
		Character:FindFirstChild("Left Leg")
680
	}
681
	if Joints[Limb] == nil then return false end
682
	if Limbs[Limb] == nil then return false end
683
	if Limb == 1 then
684
		Joints[Limb].C0 = CFrame.new(1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0)
685
		Joints[Limb].C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0)
686
	elseif Limb == 2 then
687
		Joints[Limb].C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
688
		Joints[Limb].C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
689
	elseif Limb == 3 then
690
		Joints[Limb].C0 = CFrame.new(0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0)
691
		Joints[Limb].C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0)
692
	elseif Limb == 4 then
693
		Joints[Limb].C0 = CFrame.new(-0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
694
		Joints[Limb].C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
695
	end
696
end
697
698
699
function EnableLimb(Limb, Character)
700
	if Character == nil then return false end
701
	if Character:FindFirstChild("Torso") == nil then return false end
702
	local Joints = {
703
		Character.Torso:FindFirstChild("Right Shoulder 2"),
704
		Character.Torso:FindFirstChild("Left Shoulder 2"),
705
		Character.Torso:FindFirstChild("Right Hip 2"),
706
		Character.Torso:FindFirstChild("Left Hip 2")
707
	}
708
	local Limbs = {
709
		Character:FindFirstChild("Right Arm"),
710
		Character:FindFirstChild("Left Arm"),
711
		Character:FindFirstChild("Right Leg"),
712
		Character:FindFirstChild("Left Leg")
713
	}
714
	if Joints[Limb] == nil then return false end
715
	if Limbs[Limb] == nil then return false end
716
	if Limb == 1 then
717
		Joints[Limb].Name = "Right Shoulder"
718
	elseif Limb == 2 then
719
		Joints[Limb].Name = "Left Shoulder"
720
	elseif Limb == 3 then
721
		Joints[Limb].Name = "Right Hip"
722
	elseif Limb == 4 then
723
		Joints[Limb].Name = "Left Hip"
724
	end
725
	Animate = Character:FindFirstChild("Animate")
726
	if Animate == nil then return false end
727
	Animate = Animate:Clone()
728
	Character.Animate:Remove()
729
	Animate.Parent = Character
730
end
731
732
733
function playAnimation(format, mouse)
734
	if format == "equip" then
735
		coroutine.resume(coroutine.create(function()
736
			for i = 0, 1, 0.025 do
737
				if Player.Character:FindFirstChild("Torso") ~= nil then
738
					if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
739
						Player.Character.Torso["Left Shoulder 2"].C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90) * i, 0, math.rad(67.5) * i)
740
						Player.Character.Torso["Left Shoulder 2"].C1 = CFrame.new(0, 0.5 * (1 - i), 0) * CFrame.new(0, 1.85 * i, 0)
741
					else return false end
742
				else return false end
743
				wait()
744
			end
745
		end))
746
		for i = 0, 1, 0.05 do
747
			if Player.Character:FindFirstChild("Torso") ~= nil then
748
				if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
749
					Player.Character.Torso["Right Shoulder 2"].C0 = CFrame.new(1.5, 0.5, -0.25 * i) * CFrame.fromEulerAnglesXYZ(math.rad(-90) * i, 0, math.rad(-20) * i)
750
					Player.Character.Torso["Right Shoulder 2"].C1 = CFrame.new(0, 0.5, 0)
751
				else return false end
752
			else return false end
753
			wait()
754
		end
755
		removeParts("RightHolster")
756
		makeParts("RightHand")
757
		for i = 0, 1, 0.05 do
758
			if Player.Character:FindFirstChild("Torso") ~= nil then
759
				if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
760
					Player.Character.Torso["Right Shoulder 2"].C0 = CFrame.new(1.5 * (1 - i), 0.5 * (1 - i), -0.25 * (1 - i)) * CFrame.fromEulerAnglesXYZ(math.rad(-90) * (1 - i), 0, math.rad(-20) * (1 - i)) * CFrame.new(1.25 * i, 0.5 * i, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90) * i, 0, 0)
761
					Player.Character.Torso["Right Shoulder 2"].C1 = CFrame.new(0, 0.5 * (1 - i), 0) * CFrame.new(0, 0.75 * i, 0.1 * i)
762
				else return false end
763
			else return false end
764
			if Player.Character:FindFirstChild(Name) ~= nil then
765
				if Player.Character[Name]:FindFirstChild("Handle") ~= nil then
766
					Player.Character[Name].Handle.Weld.C0 = CFrame.new(0, 1.5, 0.75)
767
					Player.Character[Name].Handle.Weld.C1 = CFrame.fromEulerAnglesXYZ(math.rad(-90) * (1 - i), 0, 0)
768
				else return false end
769
			else return false end
770
			wait()
771
		end
772
		makeParts("RightHolster")
773
		removeParts("RightHand")
774
		return playAnimation("hold")
775
	end
776
	if format == "unequip" then
777
		coroutine.resume(coroutine.create(function()
778
			for i = 1, 0, -0.025 do
779
				if Player.Character:FindFirstChild("Torso") ~= nil then
780
					if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
781
						Player.Character.Torso["Left Shoulder 2"].C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90) * i, 0, math.rad(67.5) * i)
782
						Player.Character.Torso["Left Shoulder 2"].C1 = CFrame.new(0, 0.5 * (1 - i), 0) * CFrame.new(0, 1.85 * i, 0)
783
					else return false end
784
				else return false end
785
				wait()
786
			end
787
		end))
788
		for i = 1, 0, -0.05 do
789
			if Player.Character:FindFirstChild("Torso") ~= nil then
790
				if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
791
					Player.Character.Torso["Right Shoulder 2"].C0 = CFrame.new(1.5 * (1 - i), 0.5 * (1 - i), -0.25 * (1 - i)) * CFrame.fromEulerAnglesXYZ(math.rad(-90) * (1 - i), 0, math.rad(-20) * (1 - i)) * CFrame.new(1.25 * i, 0.5 * i, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90) * i, 0, 0)
792
					Player.Character.Torso["Right Shoulder 2"].C1 = CFrame.new(0, 0.5 * (1 - i), 0) * CFrame.new(0, 0.75 * i, 0.1 * i)
793
				else return false end
794
			else return false end
795
			if Player.Character:FindFirstChild(Name) ~= nil then
796
				if Player.Character[Name]:FindFirstChild("Handle") ~= nil then
797
					Player.Character[Name].Handle.Weld.C0 = CFrame.new(0, 1.5, 0.75)
798
					Player.Character[Name].Handle.Weld.C1 = CFrame.fromEulerAnglesXYZ(math.rad(-90) * (1 - i), 0, 0)
799
				else return false end
800
			else return false end
801
			wait()
802
		end
803
		makeParts("RightHolster")
804
		removeParts("RightHand")
805
		for i = 1, 0, -0.05 do
806
			if Player.Character:FindFirstChild("Torso") ~= nil then
807
				if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
808
					Player.Character.Torso["Right Shoulder 2"].C0 = CFrame.new(1.5, 0.5, -0.25 * i) * CFrame.fromEulerAnglesXYZ(math.rad(-90) * i, 0, math.rad(-20) * i)
809
					Player.Character.Torso["Right Shoulder 2"].C1 = CFrame.new(0, 0.5, 0)
810
				else return false end
811
			else return false end
812
			wait()
813
		end
814
		removeParts("RightHolster")
815
		makeParts("RightHand")
816
		return true
817
	end
818
	if format == "hold" then
819
		if Player.Character:FindFirstChild("Torso") ~= nil then
820
			if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
821
				Player.Character.Torso["Left Shoulder 2"].C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90), 0, math.rad(67.5))
822
				Player.Character.Torso["Left Shoulder 2"].C1 = CFrame.new(0, 1.85, 0)
823
				Player.Character.Torso["Right Shoulder 2"].C0 = CFrame.new(1.25, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90), 0, 0)
824
				Player.Character.Torso["Right Shoulder 2"].C1 =  CFrame.new(0, 0.75, 0.1)
825
			else return false end
826
		else return false end
827
	end
828
	if format == "reload" then
829
		Player.Character[Name].Handle.Reload.Volume = 0
830
		Player.Character[Name].Handle.Reload.Pitch = 1.78
831
		Player.Character[Name].Handle.Reload:Play()
832
		coroutine.resume(coroutine.create(function()
833
			for i = 0, 1, 0.06 do
834
				if Player.Character:FindFirstChild("Torso") ~= nil and Player.Character:FindFirstChild(Name) ~= nil then
835
					if Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil and Player.Character[Name]:FindFirstChild("Handle") ~= nil then
836
						Player.Character.Torso["Right Shoulder 2"].C0 = CFrame.new(1.25 + i / 10, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90), 0, math.rad(i * 90))
837
						Player.Character.Torso["Right Shoulder 2"].C1 = CFrame.new(0, 0.75, 0.1)
838
						Player.Character[Name].Handle.Weld.C1 = CFrame.new(0, -1.4 * i, 0) * CFrame.fromEulerAnglesXYZ(0, 0, math.rad(-i * 170))
839
					end
840
				end
841
				wait()
842
			end
843
		end))
844
		for i = 1, 0, -0.1 do
845
			if Player.Character:FindFirstChild("Torso") ~= nil then
846
				if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
847
					Player.Character.Torso["Left Shoulder 2"].C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90) * i, 0, math.rad(67.5) * i)
848
					Player.Character.Torso["Left Shoulder 2"].C1 = CFrame.new(0, 0.5 * (1 - i), 0) * CFrame.new(0, 1.85 * i, 0)
849
				else return false end
850
			else return false end
851
			wait()
852
		end
853
		local projectile = Instance.new("Model")
854
		projectile.Name = Name.. " Projectile"
855
		local source = Player.Character[Name]:FindFirstChild("Projectile")
856
		if source == nil then return end
857
		source = source:Clone()
858
		source.Transparency = 0
859
		source.Parent = projectile
860
		for _, Part in pairs(Player.Character[Name]:GetChildren()) do
861
			if string.match(Part.Name, "Projectile") and Part.Name ~= "Projectile" then
862
				local new = Part:Clone()
863
				new.Parent = projectile
864
				new.Transparency = 0
865
				--new.CFrame = source.CFrame * (Part.Weld.C0 * Part.Weld.C1):inverse()
866
				local w = Instance.new("Weld", new)
867
				w.Part0 = w.Parent
868
				w.Part1 = source
869
				w.C0 = Part.Weld.C0
870
				w.C1 = Part.Weld.C1
871
			end
872
		end
873
		local w = Instance.new("Weld", source)
874
		w.Part0 = w.Parent
875
		w.Part1 = Player.Character:FindFirstChild("Left Arm")
876
		w.C0 = CFrame.new(0.2, -0.8, -0.6) * CFrame.fromEulerAnglesXYZ(math.rad(180), 0, math.rad(-37.5))
877
		projectile.Parent = Player.Character[Name]
878
		for i = 0, 1, 0.1 do
879
			if Player.Character:FindFirstChild("Torso") ~= nil then
880
				if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
881
					Player.Character.Torso["Left Shoulder 2"].C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(110) * i, 0, math.rad(67.5) * i)
882
					Player.Character.Torso["Left Shoulder 2"].C1 = CFrame.new(0, 0.5 * (1 - i), 0) * CFrame.new(0.35 * i, 1.85 * i, 0)
883
				else return false end
884
			else return false end
885
			wait()
886
		end
887
		Player.Character[Name].Handle.Reload.Volume = 1
888
		Player.Character[Name].Handle.Reload.Pitch = 0.9
889
		for i = 0, 0.9, 0.1 do
890
			if Player.Character:FindFirstChild("Torso") ~= nil then
891
				if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
892
					Player.Character.Torso["Left Shoulder 2"].C0 = CFrame.new(-1.5 + i, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(110), 0, math.rad(67.5))
893
					Player.Character.Torso["Left Shoulder 2"].C1 = CFrame.new(0.35 * (1 - i), 1.85, 0)
894
				else return false end
895
			else return false end
896
			wait()
897
		end
898
		projectile:Remove()
899
		Player.Character[Name].Handle.Reload:Stop()
900
		for _, Part in pairs(Player.Character[Name]:GetChildren()) do
901
			if string.match(Part.Name, "Projectile") then
902
				Part.Transparency = 0
903
			end
904
		end
905
		coroutine.resume(coroutine.create(function()
906
			for i = 1, 0, -0.1 do
907
				if Player.Character:FindFirstChild("Torso") ~= nil and Player.Character:FindFirstChild(Name) ~= nil then
908
					if Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil and Player.Character[Name]:FindFirstChild("Handle") ~= nil then
909
						Player.Character.Torso["Right Shoulder 2"].C0 = CFrame.new(1.25 + i / 10, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90), 0, math.rad(i * 90))
910
						Player.Character.Torso["Right Shoulder 2"].C1 = CFrame.new(0, 0.75, 0.1)
911
						Player.Character[Name].Handle.Weld.C1 = CFrame.new(0, -1.4 * i, 0) * CFrame.fromEulerAnglesXYZ(0, 0, math.rad(-i * 170))
912
					end
913
				end
914
				wait()
915
			end
916
		end))
917
		for i = 0.9, 0, -0.1 do
918
			if Player.Character:FindFirstChild("Torso") ~= nil then
919
				if Player.Character.Torso:FindFirstChild("Left Shoulder 2") ~= nil and Player.Character.Torso:FindFirstChild("Right Shoulder 2") ~= nil then
920
					Player.Character.Torso["Left Shoulder 2"].C0 = CFrame.new(-1.5 + i, 0.5, 0) * CFrame.fromEulerAnglesXYZ(math.rad(110), 0, math.rad(67.5))
921
					Player.Character.Torso["Left Shoulder 2"].C1 = CFrame.new(0, 1.85, 0)
922
				else return false end
923
			else return false end
924
			wait()
925
		end
926
		Player.Character[Name].Handle.Weld.C1 = CFrame.new()
927
		playAnimation("hold")
928
		return true
929
	end
930
	if format == "fire" then
931
		if Player.Character[Name]:FindFirstChild("Handle") ~= nil then
932
			Player.Character[Name].Handle.Fire:Play()
933
			CamShake(0.1, 5000)
934
		else return false end
935
		if Player.Character:FindFirstChild("Humanoid") ~= nil then
936
			coroutine.resume(coroutine.create(function() if Player.Character.Humanoid.PlatformStand == false and Player.Character.Humanoid.Sit == false then Player.Character.Humanoid.PlatformStand = true wait(0.1) Player.Character.Humanoid.PlatformStand = false end end))
937
		else return false end
938
		if Player.Character:FindFirstChild("Torso") ~= nil then
939
			coroutine.resume(coroutine.create(function() Player.Character.Torso.Velocity = Player.Character.Torso.Velocity + (Player.Character.Torso.CFrame.lookVector * -100) + Vector3.new(0, 25, 0) end))
940
		else return false end
941
		if Player.Character[Name]:FindFirstChild("Muzzle") ~= nil then
942
			coroutine.resume(coroutine.create(function() Player.Character[Name].Muzzle.Smoke.Enabled = true Player.Character[Name].Muzzle.Fire.Enabled = true wait(0.5) Player.Character[Name].Muzzle.Smoke.Enabled = false Player.Character[Name].Muzzle.Fire.Enabled = false end))
943
		else return false end
944
		if Player.Character[Name]:FindFirstChild("End 2") ~= nil then
945
			coroutine.resume(coroutine.create(function() Player.Character[Name]["End 2"].Smoke.Enabled = true Player.Character[Name]["End 2"].Fire.Enabled = true wait(0.5) Player.Character[Name]["End 2"].Smoke.Enabled = false Player.Character[Name]["End 2"].Fire.Enabled = false end))
946
		else return false end
947
	end
948
	return true
949
end
950
951
952
function CamShake(time, freq)
953
	coroutine.resume(coroutine.create(function()
954
		local cam = Workspace.CurrentCamera
955
		local time = 10
956
		local seed = Vector3.new(math.random(100, 200) / freq, math.random(100, 200) / freq, 0)
957
		if math.random(1, 2) == 1 then seed = Vector3.new(-seed.x, seed.y, 0) end
958
		if math.random(1, 2) == 1 then seed = Vector3.new(seed.x, -seed.y, 0) end
959
		cam.CoordinateFrame = (CFrame.new(cam.Focus.p) * (cam.CoordinateFrame - cam.CoordinateFrame.p) * CFrame.fromEulerAnglesXYZ(seed.x * time, seed.y * time, 0)) * CFrame.new(0, 0, (cam.CoordinateFrame.p - cam.Focus.p).magnitude)
960
		for i = 1, time do
961
			cam.CoordinateFrame = (CFrame.new(cam.Focus.p) * (cam.CoordinateFrame - cam.CoordinateFrame.p) * CFrame.fromEulerAnglesXYZ(-seed.x, -seed.y, 0)) * CFrame.new(0, 0, (cam.CoordinateFrame.p - cam.Focus.p).magnitude)
962
			wait()
963
		end
964
	end))
965
end
966
967
968
function Weld(x, y)
969
	local weld = Instance.new("Weld")
970
	weld.Part0 = x
971
	weld.Part1 = y
972
	CJ = CFrame.new(x.Position)
973
	C0 = x.CFrame:inverse() * CJ
974
	C1 = y.CFrame:inverse() * CJ
975
	weld.C0 = C0
976
	weld.C1 = C1
977
	weld.Parent = x
978
end
979
980
981
function tagHumanoid(humanoid)
982
	local tag = Instance.new("ObjectValue")
983
	tag.Name = "creator"
984
	tag.Value = Player
985
	tag.Parent = humanoid
986
	local tag = Instance.new("StringValue")
987
	tag.Name = "creatorType1"
988
	tag.Value = Name
989
	tag.Parent = humanoid
990
	local tag = Instance.new("StringValue")
991
	tag.Name = "creatorType2"
992
	tag.Value = "blown to bits"
993
	tag.Parent = humanoid
994
end
995
996
997
function untagHumanoid(humanoid)
998
	if humanoid ~= nil then
999
		local tag = humanoid:FindFirstChild("creator")
1000
		if tag ~= nil then
1001
			tag:Remove()
1002
		end
1003
		local tag = humanoid:FindFirstChild("creatorType1")
1004
		if tag ~= nil then
1005
			tag:Remove()
1006
		end
1007
		local tag = humanoid:FindFirstChild("creatorType2")
1008
		if tag ~= nil then
1009
			tag:Remove()
1010
		end
1011
	end
1012
end
1013
1014
1015
function fire(startPoint, endPoint, hit)
1016
	local projectile = Instance.new("Model")
1017
	projectile.Name = Name.. " Projectile"
1018
	local source = Player.Character[Name]:FindFirstChild("Projectile")
1019
	if source == nil then return end
1020
	source.Transparency = 1
1021
	source = source:Clone()
1022
	source.Transparency = 0
1023
	source.CanCollide = false
1024
	pcall(function() source.Fire.Enabled = true end)
1025
	pcall(function() source.Smoke.Enabled = true end)
1026
	source.CFrame = CFrame.new(startPoint, endPoint) * CFrame.fromEulerAnglesXYZ(math.rad(90), 0, 0)
1027
	source.Parent = projectile
1028
	for _, Part in pairs(Player.Character[Name]:GetChildren()) do
1029
		if string.match(Part.Name, "Projectile") and Part.Name ~= "Projectile" then
1030
			local new = Part:Clone()
1031
			new.Parent = projectile
1032
			new.Transparency = 0
1033
			new.CFrame = source.CFrame * (Part.Weld.C0 * Part.Weld.C1):inverse()
1034
			local w = Instance.new("Weld", new)
1035
			w.Part0 = w.Parent
1036
			w.Part1 = source
1037
			w.C0 = Part.Weld.C0
1038
			w.C1 = Part.Weld.C1
1039
			Part.Transparency = 1
1040
		end
1041
	end
1042
	projectile.Parent = Workspace
1043
	local vel = Instance.new("BodyVelocity")
1044
	vel.maxForce = Vector3.new(math.huge, math.huge, math.huge)
1045
	vel.velocity = (endPoint - startPoint).unit * 100
1046
	vel.Parent = source
1047
	local gyro = Instance.new("BodyGyro")
1048
	gyro.maxTorque = Vector3.new(math.huge, math.huge, math.huge)
1049
	gyro.cframe = CFrame.new(startPoint, endPoint) * CFrame.fromEulerAnglesXYZ(math.rad(90), 0, 0)
1050
	gyro.Parent = source
1051
	coroutine.resume(coroutine.create(function() wait(1) gyro:Remove() end))
1052
	wait(0.2)
1053
	source.CanCollide = true
1054
	local connection = nil
1055
	connection = source.Touched:connect(function()
1056
		if hit.Parent == nil then return end
1057
		if hit.Parent == projectile then return end
1058
		if hit.Parent == Player.Character then return end
1059
		if hit.Parent == Player.Character:FindFirstChild(Name) then return end
1060
		if hit.Parent.Parent == Player.Character then return end
1061
		for i = 1, math.random(3, 6) do
1062
			local s = Instance.new("Sound", source)
1063
			s.SoundId = "http://www.roblox.com/Asset/?id=2101148"
1064
			s.Volume = 1
1065
			s.Pitch = math.random(1, 10) / 10
1066
			s:Play()
1067
		end
1068
		coroutine.resume(coroutine.create(function()
1069
			pcall(function() vel:Remove() end)
1070
			for _, Part in pairs(projectile:GetChildren()) do
1071
				if Part.Name ~= "Projectile" then
1072
					Part:Remove()
1073
				else
1074
					Part.Anchored = true
1075
					Part.Transparency = 1
1076
					Part.CanCollide = false
1077
					pcall(function() Part.Fire.Enabled = false end)
1078
					pcall(function() Part.Smoke.Enabled = false end)
1079
				end
1080
			end
1081
			connection:disconnect()
1082
			wait(5)
1083
			projectile:Remove()
1084
		end))
1085
		local range = damage / 5
1086
		local power = damage / 2
1087
		local function Push(Part)
1088
			if #Part:GetChildren() > 0 then for _, Parts in pairs(Part:GetChildren()) do Push(Parts) end end
1089
			if pcall(function() local x = Part.CFrame end) == false then return end
1090
			if Part.Anchored == true then return end
1091
			if (Part.Position - source.Position).magnitude > range then return end
1092
			Part.Velocity = Part.Velocity + ((Part.Position - source.Position).unit * power)
1093
			coroutine.wrap(function()
1094
					if Part.Parent:FindFirstChild("Humanoid") ~= nil then
1095
						Part.Parent.Humanoid:TakeDamage(1000000) --Set to damage of explosion
1096
					end
1097
			end)()
1098
		end
1099
		Push(Workspace)
1100
		for i = 1, math.random(5, 20) do
1101
			local blast = Instance.new("Part")
1102
			blast.FormFactor = 0
1103
			blast.Size = Vector3.new(1, 1, 1)
1104
			local color = math.random(1, 4)
1105
			if color == 1 then
1106
				blast.BrickColor = BrickColor.new("Really red")
1107
			elseif color == 2 then
1108
				blast.BrickColor = BrickColor.new("Bright orange")
1109
			elseif color == 3 then
1110
				blast.BrickColor = BrickColor.new("Neon orange")
1111
			elseif color == 4 then
1112
				blast.BrickColor = BrickColor.new("Bright red")
1113
			end
1114
			blast.TopSurface = 0
1115
			blast.BottomSurface = 0
1116
			blast.Anchored = true
1117
			blast.CanCollide = false
1118
			blast.CFrame = source.CFrame * CFrame.new(math.random(-damage / 50, damage / 50), math.random(-damage / 50, damage / 50), math.random(-damage / 50, damage / 50))
1119
			blast.Parent = Workspace
1120
			local mesh = Instance.new("SpecialMesh")
1121
			mesh.MeshType = "Sphere"
1122
			mesh.Parent = blast
1123
			coroutine.resume(coroutine.create(function()
1124
				for i = 1, range, math.random(range, range + 100) / 100 do
1125
					blast.Transparency = i / range
1126
					mesh.Scale = Vector3.new(i, i, i)
1127
					wait()
1128
				end
1129
				blast:Remove()
1130
			end))
1131
		end
1132
	end)
1133
	coroutine.resume(coroutine.create(function()
1134
		wait(10)
1135
		for _, Part in pairs(projectile:GetChildren()) do
1136
			Part.CanCollide = false
1137
		end
1138
		pcall(function() source.Fire.Enabled = false end)
1139
		pcall(function() source.Smoke.Enabled = false end)
1140
		pcall(function() vel:Remove() end)
1141
		pcall(function() connection:disconnect() end)
1142
	end))
1143
end
1144
1145
1146
function onButton1Down(mouse)
1147
	if selected == false then return end
1148
	if Player.Character:FindFirstChild(Name) ~= nil and Button1Down == false and canFire == true and (function() if dual == true then if Player.Character:FindFirstChild(Name.. " (Left)") ~= nil then return true else return false end else return true end end)() == true then
1149
		if Player.Character[Name]:FindFirstChild("Handle") == nil then return end
1150
		if Player.Character[Name]:FindFirstChild("Muzzle") == nil then return end
1151
		if dual == true then if Player.Character[Name.. " (Left)"]:FindFirstChild("Handle") == nil then return end end
1152
		if dual == true then if Player.Character[Name.. " (Left)"]:FindFirstChild("Muzzle") == nil then return end end
1153
		mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
1154
		Button1Down = true
1155
		canFire = false
1156
		canFire2 = true
1157
		while canFire2 == true do
1158
			local humanoid = Player.Character:FindFirstChild("Humanoid")
1159
			if humanoid == nil then
1160
				canFire2 = false
1161
				break
1162
			end
1163
			if humanoid.Health <= 0 then
1164
				canFire2 = false
1165
				break
1166
			end
1167
			local fireLeft = false
1168
			if automatic == false and burst == false then
1169
				canFire2 = false
1170
			elseif automatic == false and burst == true then
1171
				if burstCount >= burstCountMax then
1172
					canFire2 = false
1173
					burstCount = 0
1174
					break
1175
				end
1176
				burstCount = burstCount + 1
1177
			elseif automatic == true and burst == false then
1178
				fireLeft = true
1179
			end
1180
			if magazine.Value > 0 then
1181
				magazine.Value = magazine.Value - 1
1182
				updateGui()
1183
				fire(Player.Character[Name].Muzzle.Position, mouse.Hit.p, mouse.Target)
1184
				coroutine.resume(coroutine.create(function()
1185
					if dual == true then
1186
						playAnimation("rightFire")
1187
					elseif dual == false then
1188
						playAnimation("fire")
1189
					end
1190
				end))
1191
			else
1192
				Player.Character[Name].Handle.Empty:Play()
1193
			end
1194
			if fireLeft == true and dual == true and automatic == true then
1195
				if magazine.Value > 0 then
1196
					coroutine.resume(coroutine.create(function()
1197
						wait(readyTime / 2)
1198
						magazine.Value = magazine.Value - 1
1199
						updateGui()
1200
						fire(Player.Character[Name.. " (Left)"].Muzzle.Position, mouse.Hit.p, mouse.Target)
1201
						playAnimation("leftFire")
1202
					end))
1203
				else
1204
					coroutine.resume(coroutine.create(function()
1205
						wait(readyTime / 2)
1206
						Player.Character[Name].Handle.Empty:Play()
1207
					end))
1208
				end
1209
			end
1210
			wait(readyTime)
1211
		end
1212
		mouse.Icon = "rbxasset://textures\\GunCursor.png"
1213
		canFire = true
1214
	end
1215
end
1216
1217
1218
function onButton1Up(mouse)
1219
	if selected == false then return end
1220
	Button1Down = false
1221
	canFire2 = false
1222
	burstCount = 0
1223
	while canFire == false do wait() end
1224
	if dual == true and automatic == false then
1225
		if Player.Character[Name.. " (Left)"]:FindFirstChild("Handle") == nil then return end
1226
		if Player.Character[Name.. " (Left)"]:FindFirstChild("Muzzle") == nil then return end
1227
		mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
1228
		canFire = false
1229
		canFire2 = true
1230
		while canFire2 == true do
1231
			local humanoid = Player.Character:FindFirstChild("Humanoid")
1232
			if humanoid == nil then
1233
				canFire2 = false
1234
				break
1235
			end
1236
			if humanoid.Health <= 0 then
1237
				canFire2 = false
1238
				break
1239
			end
1240
			if burst == false then
1241
				canFire2 = false
1242
			elseif burst == true then
1243
				if burstCount >= burstCountMax then
1244
					canFire2 = false
1245
					burstCount = 0
1246
					break
1247
				end
1248
				burstCount = burstCount + 1
1249
			end
1250
			if magazine.Value <= 0 then
1251
				Player.Character[Name].Handle.Empty:Play()
1252
			else
1253
				coroutine.resume(coroutine.create(function()
1254
					playAnimation("leftFire")
1255
				end))
1256
				magazine.Value = magazine.Value - 1
1257
				updateGui()
1258
				fire(Player.Character[Name.. " (Left)"].Muzzle.Position, mouse.Hit.p, mouse.Target)
1259
			end
1260
			wait(readyTime)
1261
		end
1262
		mouse.Icon = "rbxasset://textures\\GunCursor.png"
1263
		canFire = true
1264
	end
1265
end
1266
1267
1268
function onKeyDown(key, mouse)
1269
	if selected == false then return end
1270
	key = key:lower()
1271
	if key == "q" and Button1Down == false and canFire == true then
1272
		if mouse.Target == nil then return end
1273
		if game:GetService("Players"):GetPlayerFromCharacter(mouse.Target.Parent) ~= nil then
1274
			if dual == true then onKeyDown("t", mouse) end
1275
			onDeselected(mouse)
1276
			removeParts("RightHolster")
1277
			script.Parent.Parent = game:GetService("Players"):GetPlayerFromCharacter(mouse.Target.Parent).Backpack
1278
		end
1279
	end
1280
	if key == "e" and Button1Down == false and canFire == true and canSilence == true then
1281
		if silenced then
1282
			silenced = false
1283
			if Player.Character:FindFirstChild(Name) == nil then return end
1284
			if Player.Character[Name]:FindFirstChild("Muzzle") == nil then return end
1285
			if Player.Character[Name]:FindFirstChild("Muzzle 2") == nil then return end
1286
			Player.Character[Name].Muzzle.Transparency = 1
1287
			Player.Character[Name].Muzzle.Name = "Silencer"
1288
			Player.Character[Name]["Muzzle 2"].Name = "Muzzle"
1289
			if dual == true then
1290
				if Player.Character[Name.. " (Left)"]:FindFirstChild("Muzzle") == nil then return end
1291
				if Player.Character[Name.. " (Left)"]:FindFirstChild("Muzzle 2") == nil then return end
1292
				Player.Character[Name.. " (Left)"].Muzzle.Transparency = 1
1293
				Player.Character[Name.. " (Left)"].Muzzle.Name = "Silencer"
1294
				Player.Character[Name.. " (Left)"]["Muzzle 2"].Name = "Muzzle"
1295
			end
1296
		else
1297
			silenced = true
1298
			if Player.Character:FindFirstChild(Name) == nil then return end
1299
			if Player.Character[Name]:FindFirstChild("Silencer") == nil then return end
1300
			if Player.Character[Name]:FindFirstChild("Muzzle") == nil then return end
1301
			Player.Character[Name].Silencer.Transparency = 0
1302
			Player.Character[Name].Muzzle.Name = "Muzzle 2"
1303
			Player.Character[Name].Silencer.Name = "Muzzle"
1304
			if dual == true then
1305
				if Player.Character[Name.. " (Left)"]:FindFirstChild("Silencer") == nil then return end
1306
				if Player.Character[Name.. " (Left)"]:FindFirstChild("Muzzle") == nil then return end
1307
				Player.Character[Name.. " (Left)"].Silencer.Transparency = 0
1308
				Player.Character[Name.. " (Left)"].Muzzle.Name = "Muzzle 2"
1309
				Player.Character[Name.. " (Left)"].Silencer.Name = "Muzzle"
1310
			end
1311
		end
1312
	end
1313
	if key == "r" and Button1Down == false and canFire == true then
1314
		if ammo.Value > 0 and magazine.Value ~= magazineMax.Value then
1315
			canFire = false
1316
			burstCount = 0
1317
			mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
1318
			if magazine.Value > 0 then ammo.Value = ammo.Value + magazine.Value magazine.Value = 0 end
1319
			updateGui()
1320
			if dual == true then
1321
				playAnimation("reloadDual")
1322
			elseif dual == false then
1323
				playAnimation("reload")
1324
			end
1325
			if ammo.Value - magazineMax.Value < 0 then
1326
				magazine.Value = ammo.Value
1327
				ammo.Value = 0
1328
			elseif ammo.Value - magazineMax.Value >= 0 then
1329
				ammo.Value = ammo.Value - magazineMax.Value
1330
				magazine.Value = magazineMax.Value
1331
			end
1332
			updateGui()
1333
			mouse.Icon = "rbxasset://textures\\GunCursor.png"
1334
			canFire = true
1335
		end
1336
	end
1337
	if key == "t" and Button1Down == false and canFire == true and canDual == true then
1338
		canFire = false
1339
		if dual == false then
1340
			local weapon = nil
1341
			for _, p in pairs(Player.Backpack:GetChildren()) do
1342
				if p.Name == Name and p ~= script.Parent then weapon = p break end
1343
			end
1344
			if weapon ~= nil then
1345
				dual = true
1346
				weapon.Name = "Dual"
1347
				weapon.Parent = script
1348
				silenced = false
1349
				removeParts("RightHand")
1350
				makeParts("RightHand")
1351
				removeParts("RightHolster")
1352
				makeParts("LeftHolster")
1353
				playAnimation("leftEquip")
1354
				removeParts("LeftHolster")
1355
				makeParts("LeftHand")
1356
				magazineMax.Value = math.ceil(magazineMax.Value * 2)
1357
				ammoMax.Value = math.ceil(ammoMax.Value * 2)
1358
				magazine.Value = magazine.Value + weapon.Magazine.Value
1359
				ammo.Value = ammo.Value + weapon.Ammo.Value
1360
				updateGui()
1361
			end
1362
		elseif dual == true then
1363
			local weapon = script:FindFirstChild("Dual")
1364
			if weapon ~= nil then
1365
				dual = false
1366
				weapon.Name = Name
1367
				weapon.Parent = Player.Backpack
1368
				silenced = false
1369
				removeParts("RightHand")
1370
				makeParts("RightHand")
1371
				playAnimation("leftUnequip")
1372
				removeParts("LeftHand")
1373
				makeParts("RightHolster")
1374
				playAnimation("hold")
1375
				weapon.Magazine.Value = math.floor(magazine.Value / 2)
1376
				weapon.Ammo.Value = math.floor(ammo.Value / 2)
1377
				magazineMax.Value = math.ceil(magazineMax.Value / 2)
1378
				ammoMax.Value = math.ceil(ammoMax.Value / 2)
1379
				magazine.Value = math.ceil(magazine.Value / 2)
1380
				ammo.Value = math.ceil(ammo.Value / 2)
1381
				updateGui()
1382
			end
1383
		end
1384
		canFire = true
1385
	end
1386
	if key == "y" and canZoom == true then
1387
		if zoom == false then
1388
			zoom = true
1389
			local pos = mouse.Hit.p
1390
			local target = mouse.Target
1391
			local cam = Workspace.CurrentCamera
1392
			focus = Instance.new("Part", Workspace)
1393
			focus.Anchored = true
1394
			focus.CanCollide = false
1395
			focus.Transparency = 1
1396
			focus.TopSurface = 0
1397
			focus.BottomSurface = 0
1398
			focus.FormFactor = "Plate"
1399
			focus.Size = Vector3.new(0, 0, 0)
1400
			focus.CFrame = CFrame.new(pos) * (CFrame.new(Player.Character.Torso.Position, pos) - CFrame.new(Player.Character.Torso.Position, pos).p)
1401
			cam.CameraSubject = focus
1402
			cam.CameraType = "Attach"
1403
			while zoom == true and selected == true do
1404
				local set = false
1405
				if target ~= nil then
1406
					if target.Parent ~= nil then
1407
						if target.Anchored == false then
1408
							focus.CFrame = CFrame.new(target.Position) * (CFrame.new(Player.Character.Torso.Position, target.Position) - CFrame.new(Player.Character.Torso.Position, target.Position).p)
1409
							set = true
1410
						end
1411
					end
1412
				end
1413
				if set == false then
1414
					focus.CFrame = CFrame.new(pos) * (CFrame.new(Player.Character.Torso.Position, pos) - CFrame.new(Player.Character.Torso.Position, pos).p)
1415
				end
1416
				wait()
1417
			end
1418
			if focus ~= nil then focus:Remove() focus = nil end
1419
			local cam = Workspace.CurrentCamera
1420
			cam.CameraSubject = Player.Character:FindFirstChild("Humanoid")
1421
			cam.CameraType = "Custom"
1422
		else
1423
			zoom = false
1424
		end
1425
	end
1426
	if key == "u" and Button1Down == false and canFire == true then
1427
		if automatic == false and burst == false then
1428
			if switchToBurst == true then
1429
				burst = true
1430
				local m = Instance.new("Message", Player)
1431
				m.Text = "Burst"
1432
				pcall(function() Player.Character[Name].Handle.Switch:Play() end)
1433
				delay(2.5, function() m:Remove() end)
1434
			elseif switchToAutomatic == true then
1435
				automatic = true
1436
				local m = Instance.new("Message", Player)
1437
				m.Text = "Automatic"
1438
				pcall(function() Player.Character[Name].Handle.Switch:Play() end)
1439
				delay(2.5, function() m:Remove() end)
1440
			end
1441
		elseif automatic == false and burst == true then
1442
			if switchToAutomatic == true then
1443
				automatic = true
1444
				burst = false
1445
				local m = Instance.new("Message", Player)
1446
				m.Text = "Automatic"
1447
				pcall(function() Player.Character[Name].Handle.Switch:Play() end)
1448
				delay(2.5, function() m:Remove() end)
1449
			elseif switchToSingle == true then
1450
				burst = false
1451
				local m = Instance.new("Message", Player)
1452
				m.Text = "Single"
1453
				pcall(function() Player.Character[Name].Handle.Switch:Play() end)
1454
				delay(2.5, function() m:Remove() end)
1455
			end
1456
		elseif automatic == true and burst == false then
1457
			if switchToSingle == true then
1458
				automatic = false
1459
				local m = Instance.new("Message", Player)
1460
				m.Text = "Single"
1461
				pcall(function() Player.Character[Name].Handle.Switch:Play() end)
1462
				delay(2.5, function() m:Remove() end)
1463
			elseif switchToBurst == true then
1464
				automatic = false
1465
				burst = true
1466
				local m = Instance.new("Message", Player)
1467
				m.Text = "Burst"
1468
				pcall(function() Player.Character[Name].Handle.Switch:Play() end)
1469
				delay(2.5, function() m:Remove() end)
1470
			end
1471
		end
1472
	end
1473
end
1474
1475
1476
function onSelected(mouse)
1477
	if selected == true then return end
1478
	selected = true
1479
	canFire = false
1480
	mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
1481
	while Player.Character:FindFirstChild("WeaponActivated") ~= nil do
1482
		if Player.Character.WeaponActivated.Value == nil then break end
1483
		if Player.Character.WeaponActivated.Value.Parent == nil then break end
1484
		wait()
1485
	end
1486
	updateGui()
1487
	local weapon = Instance.new("ObjectValue")
1488
	weapon.Name = "WeaponActivated"
1489
	weapon.Value = script.Parent
1490
	weapon.Parent = Player.Character
1491
	DisableLimb(1, Player.Character)
1492
	DisableLimb(2, Player.Character)
1493
	ForceAngle(1, 0, Player.Character)
1494
	ForceAngle(2, 0, Player.Character)
1495
	if dual == true then
1496
		coroutine.resume(coroutine.create(function() playAnimation("leftEquip") end))
1497
		playAnimation("rightEquip")
1498
		removeParts("LeftHolster")
1499
		makeParts("LeftHand")
1500
	else
1501
		playAnimation("equip")
1502
	end
1503
	removeParts("RightHolster")
1504
	makeParts("RightHand")
1505
	mouse.Button1Down:connect(function() onButton1Down(mouse) end)
1506
	mouse.Button1Up:connect(function() onButton1Up(mouse) end)
1507
	mouse.KeyDown:connect(function(key) onKeyDown(key, mouse) end)
1508
	mouse.Icon = "rbxasset://textures\\GunCursor.png"
1509
	canFire = true
1510
end
1511
1512
1513
function onDeselected(mouse)
1514
	if selected == false then return end
1515
	Button1Down = false
1516
	while canFire == false do
1517
		wait()
1518
	end
1519
	selected = false
1520
	if dual == true then
1521
		if math.random(1, 2) == 1 then
1522
			coroutine.resume(coroutine.create(function() playAnimation("leftUnequip") end))
1523
			wait(math.random(1, 10) / 10)
1524
			playAnimation("rightUnequip")
1525
		else
1526
			coroutine.resume(coroutine.create(function() playAnimation("rightUnequip") end))
1527
			wait(math.random(1, 10) / 10)
1528
			playAnimation("leftUnequip")
1529
		end
1530
		removeParts("LeftHand")
1531
		makeParts("LeftHolster")
1532
	else
1533
		playAnimation("unequip")
1534
	end
1535
	removeParts("RightHand")
1536
	makeParts("RightHolster")
1537
	ForceAngle(1, 0, Player.Character)
1538
	ForceAngle(2, 0, Player.Character)
1539
	ResetLimbCFrame(1, Player.Character)
1540
	ResetLimbCFrame(2, Player.Character)
1541
	EnableLimb(1, Player.Character)
1542
	EnableLimb(2, Player.Character)
1543
	silenced = false
1544
	if Player.PlayerGui:FindFirstChild(Name) ~= nil then Player.PlayerGui[Name]:Remove() end
1545
	if Player.Character:FindFirstChild("WeaponActivated") ~= nil then
1546
		if Player.Character.WeaponActivated.Value == script.Parent then
1547
			Player.Character.WeaponActivated:Remove()
1548
		end
1549
	end
1550
	while Player.Character:FindFirstChild("WeaponActivated") ~= nil do
1551
		if Player.Character.WeaponActivated.Value == nil then break end
1552
		if Player.Character.WeaponActivated.Value.Parent == nil then break end
1553
		wait()
1554
	end
1555
end
1556
1557
1558
if script.Parent.ClassName ~= "HopperBin" then
1559
	if Player == nil then print("Error: Player not found!") return end
1560
	Tool = Instance.new("HopperBin")
1561
	Tool.Name = Name
1562
	Tool.Parent = Player.Backpack
1563
	script.Name = "Main"
1564
	script.Parent = Tool
1565
elseif script.Parent.ClassName == "HopperBin" then
1566
	while script.Parent.Parent.ClassName ~= "Backpack" do
1567
		wait()
1568
	end
1569
	if script.Parent:FindFirstChild("MagazineMax") == nil then
1570
		magazineMax = Instance.new("NumberValue")
1571
		magazineMax.Name = "MagazineMax"
1572
		magazineMax.Value = 3
1573
		magazineMax.Parent = script.Parent
1574
	else
1575
		magazineMax = script.Parent.MagazineMax
1576
	end
1577
	if script.Parent:FindFirstChild("Magazine") == nil then
1578
		magazine = Instance.new("NumberValue")
1579
		magazine.Name = "Magazine"
1580
		magazine.Value = 3
1581
		magazine.Parent = script.Parent
1582
	else
1583
		magazine = script.Parent.Magazine
1584
	end
1585
	if script.Parent:FindFirstChild("AmmoMax") == nil then
1586
		ammoMax = Instance.new("NumberValue")
1587
		ammoMax.Name = "AmmoMax"
1588
		ammoMax.Value = 50 --You may set the ammo of the RPG here.
1589
		ammoMax.Parent = script.Parent
1590
	else
1591
		ammoMax = script.Parent.AmmoMax
1592
	end
1593
	if script.Parent:FindFirstChild("Ammo") == nil then
1594
		ammo = Instance.new("NumberValue")
1595
		ammo.Name = "Ammo"
1596
		ammo.Value = script.Parent.AmmoMax.Value
1597
		ammo.Parent = script.Parent
1598
	else
1599
		ammo = script.Parent.Ammo
1600
	end
1601
	Player = script.Parent.Parent.Parent
1602
	makeParts("RightHolster")
1603
	script.Parent.Selected:connect(onSelected)
1604
	script.Parent.Deselected:connect(onDeselected)
1605
end
1606
--lego
1607
game.Workspace.mogoon.Humanoid.MaxHealth = math.huge  -----Replace my name with yours for INF HP
1608
print(lego)