View difference between Paste ID: HFV7hYSw and DeBaUxpA
SHOW: | | - or go back to the newest paste.
1
--SB Plasma Shotgun 2013
2
--OP VERSION!!
3
--madiik's plasma shottie
4
5
--variables
6
7
local plr = game:service'Players'.LocalPlayer
8
local char = plr.Character
9
local mouse = plr:GetMouse()
10
local humanoid = char:findFirstChild("Humanoid")
11
local torso = char:findFirstChild("Torso")
12
local head = char.Head
13
local ra = char:findFirstChild("Right Arm")
14
local la = char:findFirstChild("Left Arm")
15
local rl = char:findFirstChild("Right Leg")
16
local ll = char:findFirstChild("Left Leg")
17
local rs = torso:findFirstChild("Right Shoulder")
18
local ls = torso:findFirstChild("Left Shoulder")
19
local rh = torso:findFirstChild("Right Hip")
20
local lh = torso:findFirstChild("Left Hip")
21
local neck = torso:findFirstChild("Neck")
22
local animate = char.Animate
23
24
25
--some more variables
26
local equipping = false
27
	local equipped = false
28
	local spread = 0
29
	-- end of some more variables
30
	
31
	local sound = Instance.new("Sound",head)
32
	sound.SoundId = "http://www.roblox.com/asset?id=130113322"
33
	sound.Volume = 1
34
	sound.Pitch = 1
35
	
36
	local sound2 = Instance.new("Sound",head)
37
	sound2.SoundId = "http://www.roblox.com/asset?id=130113370"
38
	sound2.Volume = 1
39
	sound2.Pitch = 0.9
40
41
42
modelName = "Gun"
43
44
pcall(function()
45
	char:findFirstChild(modelName):Destroy()
46
	end)
47
48
49
local gun = Instance.new("Model", char)
50
gun.Name = modelName
51
52
53
54
function attach(weld, part0, part1)
55
	weld.Part0 = part0
56
	weld.Part1 = part1
57
	end
58
59
60
61
62
63
64
65
66
67
--create func
68
function part(parent, size, color, formfactor, collide, transparency)
69
	if transparency == nil then transparency = 0 end
70
	if collide == nil then collide = false end
71
		if formfactor == nil then formfactor = Enum.FormFactor.Custom end
72
        local p=Instance.new("Part", parent)
73
        p.FormFactor=formfactor
74
        p.CanCollide=false
75
        p.Size=size
76
        p.Locked=true
77
                p.Transparency=transparency
78
        p.Position=torso.Position
79
        p.BrickColor=color
80
        p.FrontSurface="SmoothNoOutlines" 
81
        p.BackSurface="SmoothNoOutlines"         
82
        p.LeftSurface="SmoothNoOutlines" 
83
        p.BottomSurface="SmoothNoOutlines" 
84
        p.TopSurface="SmoothNoOutlines"  
85
        p.RightSurface="SmoothNoOutlines" 
86
        return p
87
end
88
function wedge(parent, size, color, formfactor, collide, transparency)
89
	
90
		if transparency == nil then transparency = 0 end
91
	if collide == nil then collide = false end
92
		if formfactor == nil then formfactor = Enum.FormFactor.Custom end
93
		
94
                local p=Instance.new("WedgePart", parent)
95
        p.FormFactor=formfactor
96
        p.CanCollide=false
97
        p.Size=size
98
        p.Locked=true
99
        p.Position = torso.Position
100
        p.BrickColor=color
101
        p.FrontSurface="SmoothNoOutlines" 
102
        p.BackSurface="SmoothNoOutlines"         
103
        p.LeftSurface="SmoothNoOutlines" 
104
        p.BottomSurface="SmoothNoOutlines" 
105
        p.TopSurface="SmoothNoOutlines"  
106
        p.RightSurface="SmoothNoOutlines"
107
return p
108
end 
109
function weld(part0, part1, c0, parent, c1)
110
	if parent == nil then parent = gun end
111
	if c1 == nil then c1 = CFrame.new() end
112
113
        local wel=Instance.new("Weld", parent)
114
        wel.Part0 = part0
115
        wel.Part1 = part1
116
        wel.C0 = c0
117
        wel.C1 = c1
118
        return wel
119
end
120
function specialmesh(parent, meshType, scale, meshId)
121
        local mesh = Instance.new("SpecialMesh", parent)
122
        mesh.Scale = scale
123
        mesh.MeshType = meshType
124
        mesh.MeshId = meshId
125
        return mesh
126
end
127
128
129
--some ray functi0n
130
131
function rayCast(speed, gravity, from)
132
	coroutine.wrap(function()		
133
	if char.Humanoid.Health == 0 then return end
134
    local rayP         = Instance.new("Part")
135
    rayP.Name          = "rayP"
136-
    rayP.BrickColor    = BrickColor.new("Cyan")
136+
    rayP.BrickColor    = BrickColor.new("Really red")
137
    rayP.Anchored      = true
138
    rayP.CanCollide    = false
139
	rayP.Locked = true
140
    rayP.TopSurface    = Enum.SurfaceType.Smooth
141
    rayP.BottomSurface = Enum.SurfaceType.Smooth
142
    rayP.formFactor    = Enum.FormFactor.Custom
143
    rayP.Size          = Vector3.new(0.2, 0.2, 0.2)
144
145
Instance.new("PointLight", rayP).Color = Color3.new(0, 255, 255)
146
	
147
Instance.new("BlockMesh", rayP).Scale = Vector3.new(0.3, 0.3, 20)
148
149
150
151
152
153
	
154
	
155
156
    local bulletposition = from.Position + Vector3.new(0, 0.3, 0)
157
158
   local bulletvelocity = (Vector3.new(math.random(-spread*4,spread*4), math.random(-spread*4,spread*4), math.random(-spread*4,spread*4)))+( plr:GetMouse().Hit.p - bulletposition).unit*speed
159
    local bulletlastposition = bulletposition
160
161
162
163
    
164
    coroutine.resume(coroutine.create(function()
165
        while true do
166
	        local dt = wait()
167
            bulletlastposition = bulletposition
168
            bulletvelocity = bulletvelocity + (Vector3.new(0, -9.81*gravity, 0)*dt)
169
	        bulletposition = bulletposition + (bulletvelocity*dt)
170
                
171
            local ray = Ray.new(bulletlastposition,  (bulletposition - bulletlastposition))
172
173
            local hit, hitposition = workspace:FindPartOnRayWithIgnoreList( ray, { char, rayP, TrailPart} )
174
	            
175
	if (torso.Position - rayP.Position).magnitude > 540 then
176
	 	rayP:Destroy()
177
	 break
178
	 end
179
	
180
	
181
            if hit then
182-
				local damage = math.random(14, 17)
182+
				local damage = math.random(74, 97)
183
				if hit.Parent:findFirstChild("Humanoid") ~= nil then
184
					hit.Parent.Humanoid.Health = hit.Parent.Humanoid.Health - damage
185
				end
186
				if hit.Parent:IsA("Hat") and hit.Parent.Parent:findFirstChild("Humanoid") ~= nil then
187
					hit.Parent.Parent.Humanoid.Health = hit.Parent.Parent.Humanoid.Health - damage		
188
					end
189
                bulletposition = hitposition
190
                rayP.CFrame = CFrame.new(bulletposition, bulletposition+bulletvelocity)
191
                rayP:Destroy()
192
                break
193
            end
194
	        rayP.CFrame = CFrame.new(bulletposition, bulletposition+bulletvelocity)
195
			rayP.Parent = workspace
196
        end
197
    end))
198
	end)()
199
end
200
201
202
203
--part(parent, size, color, formfactor(opt), collide(opt), transparency(opt))
204
--specialmesh(parent, meshType, scale, meshId)
205-
p1 = part(gun, Vector3.new(0.2, 0.85, 1), BrickColor.new("Cyan"))
205+
p1 = part(gun, Vector3.new(0.2, 0.85, 1), BrickColor.new("Really red"))
206
w1 = weld(p1, torso, CFrame.new(0.6, 0, -1)* CFrame.Angles(-math.pi/4, -math.pi/2, 0))
207
208
209-
p2 = wedge(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.new("Cyan"))
209+
p2 = wedge(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.new("Really red"))
210
w2 = weld(p2, p1, CFrame.new(0, -0.325, 0.6))
211
212
213-
p3 = wedge(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.new("Cyan"))
213+
p3 = wedge(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.new("Really red"))
214
w3 = weld(p3, p1, CFrame.new(0, -0.325, 0.6)*CFrame.Angles(math.pi, math.pi, 0))
215
216
217
p4 = part(gun, Vector3.new(0.2, 0.45, 2), BrickColor.new("Dark stone grey"))
218
w4 = weld(p4, p1, CFrame.new(0, 0, 1.5))
219
220
221
p5 = part(gun, Vector3.new(0.2, 0.2, 1), BrickColor.new("Dark stone grey"))
222
Instance.new("BlockMesh", p5).Scale = Vector3.new(1.01, 0.5, 1.01)
223
w5 = weld(p5, p1, CFrame.new(0, 0.175, 0))
224
225
226
227
228
p6 = part(gun, Vector3.new(0.2, 0.2, 1), BrickColor.new("Dark stone grey"))
229
Instance.new("BlockMesh", p6).Scale = Vector3.new(1.01, 0.5, 1.01)
230
w6 = weld(p6, p1, CFrame.new(0, -0.175, 0))
231
232
233
234-
p7 = part(gun, Vector3.new(0.2, 0.75, 0.25), BrickColor.new("Cyan"))
234+
p7 = part(gun, Vector3.new(0.2, 0.75, 0.25), BrickColor.new("Really red"))
235
Instance.new("BlockMesh", p7).Scale = Vector3.new(.9, 1, 1)
236
w7 = weld(p7, p1, CFrame.new(0, -0.2, 1)*CFrame.Angles(math.pi/6, 0, 0))
237
238
239
240
p8 = part(gun, Vector3.new(0.2, 1, 0.2), BrickColor.new("Dark stone grey"))
241
Instance.new("CylinderMesh", p8)
242
w8 = weld(p8, p1, CFrame.new(0, -3, -0.1)*CFrame.Angles(math.pi/2, 0, 0))
243
244
245
246
--part(parent, size, color, formfactor(opt), collide(opt), transparency(opt))
247
--specialmesh(parent, meshType, scale, meshId)
248
249
250
251
p9 = part(gun, Vector3.new(0.2, 1, 0.2), BrickColor.new("Dark stone grey"))
252
Instance.new("CylinderMesh", p9).Scale = Vector3.new(0.8, 1, 0.8)
253
w9 = weld(p9, p1, CFrame.new(0, -2.8, 0.08)*CFrame.Angles(math.pi/2, 0, 0))
254
255
256
257
258
pa1 = part(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.new("Dark stone grey"))
259
specialmesh(pa1, "FileMesh", Vector3.new(0.4, 0.4, 1), "http://www.roblox.com/asset/?id=3270017")
260
we1 = weld(pa1, p1, CFrame.new(1.1, 0.2, 0)*CFrame.Angles(0, math.pi/2, 0))
261
262
263
pa2 = part(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.new("Dark stone grey"))
264
specialmesh(pa2, "FileMesh", Vector3.new(0.35, 0.35, 1.5), "http://www.roblox.com/asset/?id=3270017")
265
we2 = weld(pa2, p1, CFrame.new(1.9 - 0.6, 0, 0.05)*CFrame.Angles(0, math.pi/2, 0))
266
267
pa3 = part(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.White())
268
Instance.new("BlockMesh", pa3).Scale = Vector3.new(0.95, 1, 0.1)
269
we3 = weld(pa3, p1, CFrame.new(-0.01, 0, 1.82 - 0.6))
270
271
pa4 = part(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.White())
272
Instance.new("BlockMesh", pa4).Scale = Vector3.new(0.95, 1, 0.1)
273
we4 = weld(pa4, p1, CFrame.new(-0.01, 0, 1.98 - 0.6))
274
275
pa5 = part(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.White())
276
Instance.new("BlockMesh", pa5).Scale = Vector3.new(0.95, 0.1, 0.1)
277
we5 = weld(pa5, p1, CFrame.new(-0.01, -0.05, 1.85 - 0.6))
278
279
pa6 = part(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.White())
280
Instance.new("BlockMesh", pa6).Scale = Vector3.new(0.95, 0.1, 0.1)
281
we6 = weld(pa6, p1, CFrame.new(-0.01, -0.05, 1.95 - 0.6))
282
283
pa7 = part(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.White())
284
Instance.new("BlockMesh", pa7).Scale = Vector3.new(0.95, 0.1, 0.1)
285
we7 = weld(pa7, p1, CFrame.new(-0.01, -0.02, 1.9 - 0.6))
286
287
288
pa8 = wedge(gun, Vector3.new(0.2, 0.2, 0.2), BrickColor.new("Dark stone grey"))
289
specialmesh(pa8, "Wedge", Vector3.new(0.2, 1, 1), "")
290
we8 = weld(pa8, p1, CFrame.new(0, -0.23, -3.35)*CFrame.Angles(0, math.pi, 0))
291
292-
pa9 = part(gun, Vector3.new(0.21, 0.8, 0.21), BrickColor.new("Cyan"))
292+
pa9 = part(gun, Vector3.new(0.21, 0.8, 0.21), BrickColor.new("Really red"))
293
we9 = weld(pa9, p1, CFrame.new(0, -2.3, 0.2)*CFrame.Angles(math.pi/2, 0, 0))
294
295
296
--part(parent, size, color, formfactor(opt), collide(opt), transparency(opt))
297
--specialmesh(parent, meshType, scale, meshId)
298
299
300
for pos = 0.9, 1.9, 0.2 do
301-
	local lpart = part(gun, Vector3.new(0.201, 0.201, 0.201), BrickColor.new("Cyan"))
301+
	local lpart = part(gun, Vector3.new(0.201, 0.201, 0.201), BrickColor.new("Really red"))
302
	Instance.new("BlockMesh", lpart).Scale = Vector3.new(1, 0.5, 0.8)
303
		local lweld = weld(lpart, p1, CFrame.new(0, -0.25, pos))
304
end
305
306
307
308
--function attach(weld, part0, part1)
309
	--weld.Part0 = part0
310
	--weld.Part1 = part1
311
	--end
312
313
function equip()
314
	animate.Disabled = true
315
	--weld(part0, part1, c0, c1)
316
	--part(parent, size, color, formfactor(opt), collide(opt), transparency(opt))
317
	local ftorso = part(gun, torso.Size, torso.BrickColor)
318
	ftorso.Name = "FakeTorsoShotgun"
319
	Instance.new("SpecialMesh", ftorso).MeshId = "rbxasset://fonts/torso.mesh"
320
	local ftorsoweld = weld(ftorso, torso, CFrame.new(),ftorso)
321
	torso.Transparency = 1
322
		local ar = Instance.new("Part", gun)
323
ar.FormFactor = "Custom"
324
ar.Size = Vector3.new(1, 1, 1)
325
ar.Transparency = 1
326
ar.CanCollide = false
327
ar.Locked = true
328
ar.Name = "ShoulderJoint"
329
ar:BreakJoints()
330
local weldf = Instance.new("Motor", ar)
331
weldf.C0 = CFrame.new(0, 0.5, 0)
332
weldf.Part0 = ra
333
weldf.Part1 = ar
334
	motor = Instance.new("Motor", ar)
335
	motor.Part0 = ftorso
336
	motor.Part1 = ar
337
	motor.C0 = CFrame.new(1.5, 0.5, 0)
338
	local ar2 = Instance.new("Part", gun)
339
ar2.FormFactor = "Custom"
340
ar2.Size = Vector3.new(1, 1, 1)
341
ar2.Transparency = 1
342
ar2.CanCollide = false
343
ar2.Locked = true
344
ar2.Name = "ShoulderJoint2"
345
ar2:BreakJoints()
346
local weldf2 = Instance.new("Motor", ar2)
347
weldf2.C0 = CFrame.new(0, 0.5, 0)
348
weldf2.Part0 = la
349
weldf2.Part1 = ar2
350
	motor2 = Instance.new("Motor", ar2)
351
	motor2.Part0 = ftorso
352
	motor2.Part1 = ar2
353
	motor2.C0 = CFrame.new(-1.5, 0.5, 0)
354
	w1.Part1 = ra
355
	for angle = 0, 180, 20 do
356
	w1.C0 = CFrame.new(0+angle/460, 0.5-angle/160, 0.5-angle/360) * CFrame.Angles(math.pi + math.rad(angle/2), math.rad(angle), math.rad(angle))
357
	wait()
358
	end
359
	attach(rh, ftorso, rl)
360
	attach(lh, ftorso, ll)
361
	for angle = 0, 90, 10 do
362
		ftorsoweld.C0 = CFrame.new() * CFrame.Angles(0, math.rad(angle-30), 0)
363
		motor.C0 = CFrame.new(1.3, 0.5, 0-angle/120) * CFrame.Angles(math.rad(angle), 0, -math.rad(angle-30))
364
		motor2.C0 = CFrame.new(-1.3, 0.5, 0-angle/180) * CFrame.Angles(math.rad(angle), 0, 0)
365
		wait()
366
	end
367
	
368
	
369
			
370
	
371
end
372
373
function unequip()
374
	animate.Disabled = false
375
		attach(rh, torso, rl)
376
	attach(lh, torso, ll)
377
w1.C0 = CFrame.new(0.6, 0, -1)* CFrame.Angles(-math.pi/4, -math.pi/2, 0)
378
w1.Part1 = torso
379
torso.Transparency = 0
380
pcall(function()
381
	gun.FakeTorsoShotgun:Destroy()
382
	gun.FakeTorsoShotgun:Destroy()
383
	gun.ShoulderJoint:Destroy()
384
	gun.ShoulderJoint:Destroy()
385
	gun.ShoulderJoint2:Destroy()
386
	gun.ShoulderJoint2:Destroy()
387
	end)
388
389
end
390
	
391
	
392
local tool = Instance.new("HopperBin", plr.Backpack)
393
tool.Name = "Plasma Shotgun"
394
	
395
	
396
397
tool.Selected:connect(function(mouse2)
398
	equipped = true
399
	local mainGui = Instance.new("ScreenGui", plr.PlayerGui)
400
	mainGui.Name = "AccuracyStuff"
401
	
402
	local accuracyFrame = Instance.new("Frame", mainGui)
403
accuracyFrame.Size = UDim2.new(0, 100, 0, 100)
404
accuracyFrame.BackgroundTransparency = 1
405
406
mouse2.Icon = "http://www.roblox.com/asset/?id=108625356"
407
408
409
410
local accuracy1 = Instance.new("TextLabel", accuracyFrame)
411
accuracy1.Text = ""
412
accuracy1.BorderSizePixel = 0
413
accuracy1.BackgroundColor = BrickColor.new("Lime green")
414
accuracy1.Size = UDim2.new(0, -15, 0, 2)
415
416
local accuracy2 = Instance.new("TextLabel", accuracyFrame)
417
accuracy2.Text = ""
418
accuracy2.BorderSizePixel = 0
419
accuracy2.BackgroundColor = BrickColor.new("Lime green")
420
accuracy2.Size = UDim2.new(0, 15, 0, 2)
421
422
local accuracy3 = Instance.new("TextLabel", accuracyFrame)
423
accuracy3.Text = ""
424
accuracy3.BorderSizePixel = 0
425
accuracy3.BackgroundColor = BrickColor.new("Lime green")
426
accuracy3.Size = UDim2.new(0, 2, 0, -15)
427
428
local accuracy4 = Instance.new("TextLabel", accuracyFrame)
429
accuracy4.Text = ""
430
accuracy4.BorderSizePixel = 0
431
accuracy4.BackgroundColor = BrickColor.new("Lime green")
432
accuracy4.Size = UDim2.new(0, 2, 0, 15)
433
434
coroutine.wrap(function()
435
	while equipped do
436
	if spread < 0 then spread = 0 end
437
			if humanoid.Health == 0 then break end
438
	accuracy1.Position = UDim2.new(0, 41-(spread*40), 0, 50)
439
	accuracy2.Position = UDim2.new(0, 60+(spread*40), 0, 50)
440
	accuracy3.Position = UDim2.new(0, 50, 0, 40-(spread*40))
441
	accuracy4.Position = UDim2.new(0, 50, 0, 60+(spread*40))	
442
	accuracyFrame.Position = UDim2.new(0, mouse.X-50, 0, mouse.Y-50)
443
	game:service'RunService'.Stepped:wait()
444
	end
445
end)()
446
447
equip()
448
mouse2.Button1Down:connect(function()
449
	if debounce then return end
450
	debounce = true
451
	sound:play()
452
	motor.C0 = motor.C0 * CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(20), -math.rad(12), 0)
453
	coroutine.wrap(function()
454
		wait(0.3)
455
		for angle = 0, 4 do
456
			motor.C0 = motor.C0 * CFrame.Angles(-math.rad(3.5), math.rad(2.2), 0)
457
			wait()
458
		end
459
		motor.C0 = CFrame.new(1.3, 0.5, 0-90/120) * CFrame.Angles(math.rad(90), 0, -math.rad(90-30))
460
		wait(0.2)
461
		sound2:play()
462
				we9.C0 = we9.C0 * CFrame.new(0, 0, -0.3)
463
		motor2.C0 = motor2.C0 * CFrame.new(0.3, 0, 0)
464
		wait(0.1)
465
		for move = 0, 3 do
466
			if move > 2 then return end
467
		we9.C0 = we9.C0 * CFrame.new(0, 0, 0.1)
468
		motor2.C0 = motor2.C0 * CFrame.new(-0.1, 0, 0)
469
		wait(0.06)
470
		end
471
	end)()
472-
	spread = spread + 1
472+
	spread = spread + 4
473
	coroutine.wrap(function()
474-
	for bullitz = 0, 7 do
474+
	for bullitz = 1, 35 do
475-
		if bullitz > 6 then return end
475+
	rayCast(250, 2, pa8)
476-
	rayCast(200, 2, pa8)
476+
477
	end)()
478
	coroutine.wrap(function()
479
		for _ = 0, 50 do
480
			pcall(function()
481
		spread = spread - 0.5
482-
		spread = spread - 0.02
482+
483
		wait()
484
		end
485
	end)()
486
	debounce = false
487-
	wait(1)
487+
488
	
489
end)
490
491
tool.Deselected:connect(function()
492
	equipped = false
493
	pcall(function()
494
		unequip()
495
		plr.PlayerGui.AccuracyStuff:Destroy()
496
		plr.PlayerGui.AccuracyStuff:Destroy()
497
		plr.PlayerGui.AccuracyStuff:Destroy()
498
	end)
499
end)