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 16 and put your name where it says "YOUR NAME HERE" | |
2 | ------------------------------------------------------------------------------------- | |
3 | --[[ | |
4 | Can Bomb, an improvised explosive device made from ammonium nitrate, a bean can, and a fuse. | |
5 | Produces a nice medium-pressure explosion. | |
6 | http://www.roblox.com/asset/?id=10470609 Beans | |
7 | http://www.roblox.com/asset/?id=45934917 Beans | |
8 | --]] | |
9 | ||
10 | ||
11 | if script == nil then return end | |
12 | ||
13 | ||
14 | ||
15 | ||
16 | - | Player = script:FindFirstChild("Player") ~= nil and script.Player.Value or game:GetService("Players"):FindFirstChild("mogoon") |
16 | + | Player = script:FindFirstChild("Player") ~= nil and script.Player.Value or game:GetService("Players"):FindFirstChild("determinator1101") |
17 | Name = "Can Bomb" | |
18 | selected = false | |
19 | Button1Down = false | |
20 | thrown = false | |
21 | ||
22 | ||
23 | function makeParts(format) | |
24 | local grenade = Instance.new("Model") | |
25 | grenade.Name = Name | |
26 | grenade.Parent = Player.Character | |
27 | local pm = Instance.new("Part") | |
28 | pm.Name = "Handle" | |
29 | pm.formFactor = "Symmetric" | |
30 | pm.Size = Vector3.new(1, 1, 1) | |
31 | pm.BrickColor = BrickColor.new("Black") | |
32 | pm.CanCollide = false | |
33 | pm.Locked = true | |
34 | pm.TopSurface = 0 | |
35 | pm.BottomSurface = 0 | |
36 | pm.Parent = grenade | |
37 | local m = Instance.new("SpecialMesh") | |
38 | m.MeshType = "FileMesh" | |
39 | m.Scale = Vector3.new(1, 1, 1) | |
40 | m.MeshId = "http://www.roblox.com/asset/?id=10470609" | |
41 | m.TextureId = "http://www.roblox.com/asset/?id=45934917" | |
42 | m.Parent = pm | |
43 | local w = Instance.new("Weld") | |
44 | w.Part0 = pm | |
45 | if format == "hand" then | |
46 | w.Part1 = Player.Character:FindFirstChild("Right Arm") | |
47 | w.C0 = CFrame.new(-1.2, 0, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90), 0, math.rad(90)) | |
48 | w.C1 = CFrame.new() | |
49 | elseif format == "holster" then | |
50 | w.Part1 = Player.Character:FindFirstChild("Torso") | |
51 | w.C0 = CFrame.new(0.6, -0.4, 0.6) | |
52 | w.C1 = CFrame.new() | |
53 | grenade.Name = Name.. " (Holstered)" | |
54 | end | |
55 | w.Parent = pm | |
56 | local s = Instance.new("Sound") | |
57 | s.Name = "Explode" | |
58 | s.SoundId = "rbxasset://sounds\\collide.wav" | |
59 | s.Volume = 1 | |
60 | s.Pitch = 1 | |
61 | s.Looped = false | |
62 | s.Parent = pm | |
63 | local s = Instance.new("Sound") | |
64 | s.Name = "Pin" | |
65 | s.SoundId = "http://www.roblox.com/Asset/?id=31760113" | |
66 | s.Volume = 1 | |
67 | s.Pitch = 1 | |
68 | s.Looped = true | |
69 | s.Parent = pm | |
70 | local s = Instance.new("Sound") | |
71 | s.Name = "Light" | |
72 | s.SoundId = "http://www.roblox.com/Asset/?id=19095020" | |
73 | s.Volume = 1 | |
74 | s.Pitch = 1 | |
75 | s.Looped = false | |
76 | s.Parent = pm | |
77 | local p = Instance.new("Part") | |
78 | p.Name = "Rag" | |
79 | p.formFactor = "Symmetric" | |
80 | p.Size = Vector3.new(1, 1, 1) | |
81 | p.BrickColor = BrickColor.new("White") | |
82 | p.CanCollide = false | |
83 | p.Transparency = 1 | |
84 | p.Locked = true | |
85 | p.TopSurface = 0 | |
86 | p.BottomSurface = 0 | |
87 | p.Parent = grenade | |
88 | local f = Instance.new("Fire") | |
89 | f.Enabled = false | |
90 | f.Name = "Fire" | |
91 | f.Color = Color3.new(1, 0.5, 0) | |
92 | f.SecondaryColor = Color3.new(1, 0.75, 0.5) | |
93 | f.Heat = 25 | |
94 | f.Size = 2 | |
95 | f.Parent = p | |
96 | local m = Instance.new("CylinderMesh") | |
97 | m.Scale = Vector3.new(0.15, 0.4, 0.15) | |
98 | m.Parent = p | |
99 | local w = Instance.new("Weld") | |
100 | w.Part0 = p | |
101 | w.Part1 = pm | |
102 | w.C0 = CFrame.new(0, -0.6, 0) | |
103 | w.C1 = CFrame.new() | |
104 | w.Parent = p | |
105 | end | |
106 | ||
107 | ||
108 | function removeParts(format) | |
109 | if format == "hand" then | |
110 | if Player.Character:FindFirstChild(Name) ~= nil then | |
111 | Player.Character[Name]:Remove() | |
112 | end | |
113 | elseif format == "holster" then | |
114 | if Player.Character:FindFirstChild(Name.. " (Holstered)") ~= nil then | |
115 | Player.Character[Name.. " (Holstered)"]:Remove() | |
116 | end | |
117 | end | |
118 | end | |
119 | ||
120 | ||
121 | function SetAngle(Joint, Angle, Character) | |
122 | if Character == nil then return false end | |
123 | local Joints = { | |
124 | Character.Torso:FindFirstChild("Right Shoulder 2"), | |
125 | Character.Torso:FindFirstChild("Left Shoulder 2"), | |
126 | Character.Torso:FindFirstChild("Right Hip 2"), | |
127 | Character.Torso:FindFirstChild("Left Hip 2") | |
128 | } | |
129 | if Joints[Joint] == nil then return false end | |
130 | if Joint == 1 or Joint == 3 then | |
131 | Joints[Joint].DesiredAngle = Angle | |
132 | end | |
133 | if Joint == 2 or Joint == 4 then | |
134 | Joints[Joint].DesiredAngle = -Angle | |
135 | end | |
136 | end | |
137 | ||
138 | ||
139 | function ForceAngle(Joint, Angle, Character) | |
140 | if Character == nil then return false end | |
141 | local Joints = { | |
142 | Character.Torso:FindFirstChild("Right Shoulder 2"), | |
143 | Character.Torso:FindFirstChild("Left Shoulder 2"), | |
144 | Character.Torso:FindFirstChild("Right Hip 2"), | |
145 | Character.Torso:FindFirstChild("Left Hip 2") | |
146 | } | |
147 | if Joints[Joint] == nil then return false end | |
148 | if Joint == 1 or Joint == 3 then | |
149 | Joints[Joint].DesiredAngle = Angle | |
150 | Joints[Joint].CurrentAngle = Angle | |
151 | end | |
152 | if Joint == 2 or Joint == 4 then | |
153 | Joints[Joint].DesiredAngle = -Angle | |
154 | Joints[Joint].CurrentAngle = -Angle | |
155 | end | |
156 | end | |
157 | ||
158 | ||
159 | function SetSpeed(Joint, Speed, Character) | |
160 | if Character == nil then return false end | |
161 | local Joints = { | |
162 | Character.Torso:FindFirstChild("Right Shoulder 2"), | |
163 | Character.Torso:FindFirstChild("Left Shoulder 2"), | |
164 | Character.Torso:FindFirstChild("Right Hip 2"), | |
165 | Character.Torso:FindFirstChild("Left Hip 2") | |
166 | } | |
167 | if Joints[Joint] == nil then return false end | |
168 | Joints[Joint].MaxVelocity = Speed | |
169 | end | |
170 | ||
171 | ||
172 | function DisableLimb(Limb, Character) | |
173 | if Character == nil then return false end | |
174 | if Character:FindFirstChild("Torso") == nil then return false end | |
175 | local Joints = { | |
176 | Character.Torso:FindFirstChild("Right Shoulder"), | |
177 | Character.Torso:FindFirstChild("Left Shoulder"), | |
178 | Character.Torso:FindFirstChild("Right Hip"), | |
179 | Character.Torso:FindFirstChild("Left Hip") | |
180 | } | |
181 | local Limbs = { | |
182 | Character:FindFirstChild("Right Arm"), | |
183 | Character:FindFirstChild("Left Arm"), | |
184 | Character:FindFirstChild("Right Leg"), | |
185 | Character:FindFirstChild("Left Leg") | |
186 | } | |
187 | if Joints[Limb] == nil then return false end | |
188 | if Limbs[Limb] == nil then return false end | |
189 | local Joint = Instance.new("Motor") | |
190 | Joint.Parent = Character.Torso | |
191 | Joint.Part0 = Character.Torso | |
192 | Joint.Part1 = Limbs[Limb] | |
193 | if Limb == 1 then | |
194 | Joint.C0 = CFrame.new(1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0) | |
195 | Joint.C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0) | |
196 | Joint.Name = "Right Shoulder 2" | |
197 | elseif Limb == 2 then | |
198 | Joint.C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0) | |
199 | Joint.C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0) | |
200 | Joint.Name = "Left Shoulder 2" | |
201 | elseif Limb == 3 then | |
202 | Joint.C0 = CFrame.new(0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0) | |
203 | Joint.C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0) | |
204 | Joint.Name = "Right Hip 2" | |
205 | elseif Limb == 4 then | |
206 | Joint.C0 = CFrame.new(-0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0) | |
207 | Joint.C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0) | |
208 | Joint.Name = "Left Hip 2" | |
209 | end | |
210 | Joint.MaxVelocity = Joints[Limb].MaxVelocity | |
211 | Joint.CurrentAngle = Joints[Limb].CurrentAngle | |
212 | Joint.DesiredAngle = Joints[Limb].DesiredAngle | |
213 | Joints[Limb]:Remove() | |
214 | end | |
215 | ||
216 | ||
217 | function ResetLimbCFrame(Limb, Character) | |
218 | if Character == nil then return false end | |
219 | if Character.Parent == nil then return false end | |
220 | if Character:FindFirstChild("Torso") == nil then return false end | |
221 | local Joints = { | |
222 | Character.Torso:FindFirstChild("Right Shoulder 2"), | |
223 | Character.Torso:FindFirstChild("Left Shoulder 2"), | |
224 | Character.Torso:FindFirstChild("Right Hip 2"), | |
225 | Character.Torso:FindFirstChild("Left Hip 2") | |
226 | } | |
227 | local Limbs = { | |
228 | Character:FindFirstChild("Right Arm"), | |
229 | Character:FindFirstChild("Left Arm"), | |
230 | Character:FindFirstChild("Right Leg"), | |
231 | Character:FindFirstChild("Left Leg") | |
232 | } | |
233 | if Joints[Limb] == nil then return false end | |
234 | if Limbs[Limb] == nil then return false end | |
235 | if Limb == 1 then | |
236 | Joints[Limb].C0 = CFrame.new(1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0) | |
237 | Joints[Limb].C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0) | |
238 | elseif Limb == 2 then | |
239 | Joints[Limb].C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0) | |
240 | Joints[Limb].C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0) | |
241 | elseif Limb == 3 then | |
242 | Joints[Limb].C0 = CFrame.new(0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0) | |
243 | Joints[Limb].C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0) | |
244 | elseif Limb == 4 then | |
245 | Joints[Limb].C0 = CFrame.new(-0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0) | |
246 | Joints[Limb].C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0) | |
247 | end | |
248 | end | |
249 | ||
250 | ||
251 | function EnableLimb(Limb, Character) | |
252 | if Character == nil then return false end | |
253 | if Character:FindFirstChild("Torso") == nil then return false end | |
254 | local Joints = { | |
255 | Character.Torso:FindFirstChild("Right Shoulder 2"), | |
256 | Character.Torso:FindFirstChild("Left Shoulder 2"), | |
257 | Character.Torso:FindFirstChild("Right Hip 2"), | |
258 | Character.Torso:FindFirstChild("Left Hip 2") | |
259 | } | |
260 | local Limbs = { | |
261 | Character:FindFirstChild("Right Arm"), | |
262 | Character:FindFirstChild("Left Arm"), | |
263 | Character:FindFirstChild("Right Leg"), | |
264 | Character:FindFirstChild("Left Leg") | |
265 | } | |
266 | if Joints[Limb] == nil then return false end | |
267 | if Limbs[Limb] == nil then return false end | |
268 | if Limb == 1 then | |
269 | Joints[Limb].Name = "Right Shoulder" | |
270 | elseif Limb == 2 then | |
271 | Joints[Limb].Name = "Left Shoulder" | |
272 | elseif Limb == 3 then | |
273 | Joints[Limb].Name = "Right Hip" | |
274 | elseif Limb == 4 then | |
275 | Joints[Limb].Name = "Left Hip" | |
276 | end | |
277 | Animate = Character:FindFirstChild("Animate") | |
278 | if Animate == nil then return false end | |
279 | Animate = Animate:Clone() | |
280 | Character.Animate:Remove() | |
281 | Animate.Parent = Character | |
282 | end | |
283 | ||
284 | ||
285 | function Weld(x, y) | |
286 | local weld = Instance.new("Weld") | |
287 | weld.Part0 = x | |
288 | weld.Part1 = y | |
289 | CJ = CFrame.new(x.Position) | |
290 | C0 = x.CFrame:inverse() * CJ | |
291 | C1 = y.CFrame:inverse() * CJ | |
292 | weld.C0 = C0 | |
293 | weld.C1 = C1 | |
294 | weld.Parent = x | |
295 | end | |
296 | ||
297 | ||
298 | function tagHumanoid(humanoid) | |
299 | local tag = Instance.new("ObjectValue") | |
300 | tag.Name = "creator" | |
301 | tag.Value = Player | |
302 | tag.Parent = humanoid | |
303 | local tag = Instance.new("StringValue") | |
304 | tag.Name = "creatorType1" | |
305 | tag.Value = Name | |
306 | tag.Parent = humanoid | |
307 | local tag = Instance.new("StringValue") | |
308 | tag.Name = "creatorType2" | |
309 | tag.Value = "blown up" | |
310 | tag.Parent = humanoid | |
311 | end | |
312 | ||
313 | ||
314 | function untagHumanoid(humanoid) | |
315 | if humanoid ~= nil then | |
316 | local tag = humanoid:FindFirstChild("creator") | |
317 | if tag ~= nil then | |
318 | tag:Remove() | |
319 | end | |
320 | local tag = humanoid:FindFirstChild("creatorType1") | |
321 | if tag ~= nil then | |
322 | tag:Remove() | |
323 | end | |
324 | local tag = humanoid:FindFirstChild("creatorType2") | |
325 | if tag ~= nil then | |
326 | tag:Remove() | |
327 | end | |
328 | end | |
329 | end | |
330 | ||
331 | ||
332 | function fire(v) | |
333 | if Player.Character:FindFirstChild(Name) == nil then makeParts("hand") end | |
334 | if Player.Character[Name]:FindFirstChild("Handle") == nil then return end | |
335 | if Player.Character[Name].Handle:FindFirstChild("Weld") ~= nil then Player.Character[Name].Handle.Weld:Remove() end | |
336 | local bodyVelocity = Instance.new("BodyVelocity") | |
337 | bodyVelocity.maxForce = Vector3.new(math.huge, math.huge, math.huge) | |
338 | bodyVelocity.velocity = v * 75 | |
339 | bodyVelocity.Parent = Player.Character[Name].Handle | |
340 | wait(0.1) | |
341 | bodyVelocity:Remove() | |
342 | end | |
343 | ||
344 | ||
345 | function onButton1Down(mouse) | |
346 | if selected == false then return end | |
347 | if Player.Character:FindFirstChild(Name) ~= nil and Button1Down ~= true and thrown ~= true then | |
348 | if Player.Character[Name]:FindFirstChild("Handle") == nil then return end | |
349 | Button1Down = true | |
350 | mouse.Icon = "rbxasset://textures\\GunWaitCursor.png" | |
351 | Player.Character[Name].Handle.Pin:Play() | |
352 | Player.Character[Name].Handle.Light:Play() | |
353 | Player.Character[Name].Rag.Fire.Enabled = true | |
354 | Player.Character[Name].Handle.CanCollide = true | |
355 | Player.Character[Name].Rag.CanCollide = true | |
356 | coroutine.resume(coroutine.create(function() | |
357 | wait(math.random(3, 6)) | |
358 | if Player.Character:FindFirstChild(Name) ~= nil then | |
359 | if Player.Character[Name]:FindFirstChild("Handle") ~= nil then | |
360 | local e = Instance.new("Explosion") | |
361 | e.BlastPressure = 20 | |
362 | e.BlastRadius = 10 | |
363 | e.Position = Player.Character[Name].Handle.Position | |
364 | e.Parent = game:GetService("Workspace") | |
365 | e.Hit:connect(function(hit) if hit.Parent:FindFirstChild("Humanoid") ~= nil then tagHumanoid(hit.Parent.Humanoid) delay(1, function() untagHumanoid(hit.Parent.Humanoid) end) end end) | |
366 | Player.Character[Name].Handle.Explode:Play() | |
367 | Player.Character[Name].Handle.Transparency = 1 | |
368 | Player.Character[Name].Handle.CanCollide = false | |
369 | Player.Character[Name].Handle.Pin:Stop() | |
370 | end | |
371 | end | |
372 | wait() | |
373 | if Player.Character:FindFirstChild("WeaponActivated") ~= nil then | |
374 | Player.Character.WeaponActivated:Remove() | |
375 | end | |
376 | thrown = false | |
377 | Button1Down = false | |
378 | selected = true | |
379 | onDeselected(mouse) | |
380 | removeParts("holster") | |
381 | script.Parent:Remove() | |
382 | end)) | |
383 | end | |
384 | end | |
385 | ||
386 | ||
387 | function onButton1Up(mouse) | |
388 | if selected == false then return end | |
389 | if Button1Down == true and thrown ~= true then | |
390 | thrown = true | |
391 | mouse.Icon = "rbxasset://textures\\GunCursor.png" | |
392 | SetSpeed(1, 2, Player.Character) | |
393 | SetAngle(1, 0, Player.Character) | |
394 | EnableLimb(1, Player.Character) | |
395 | fire((mouse.Hit.p - Player.Character[Name].Handle.Position).unit) | |
396 | end | |
397 | Button1Down = false | |
398 | end | |
399 | ||
400 | ||
401 | function onKeyDown(key, mouse) | |
402 | if selected == false then return end | |
403 | key = key:lower() | |
404 | if key == "q" and Button1Down == false and thrown ~= true then | |
405 | if mouse.Target == nil then return end | |
406 | if game:GetService("Players"):GetPlayerFromCharacter(mouse.Target.Parent) ~= nil then | |
407 | onDeselected(mouse) | |
408 | removeParts("holster") | |
409 | script.Parent.Parent = game:GetService("Players"):GetPlayerFromCharacter(mouse.Target.Parent).Backpack | |
410 | end | |
411 | end | |
412 | end | |
413 | ||
414 | ||
415 | function onSelected(mouse) | |
416 | if selected == true then return end | |
417 | selected = true | |
418 | mouse.Icon = "rbxasset://textures\\GunWaitCursor.png" | |
419 | while Player.Character:FindFirstChild("WeaponActivated") ~= nil or thrown == true do | |
420 | if Player.Character.WeaponActivated.Value == nil then break end | |
421 | if Player.Character.WeaponActivated.Value.Parent == nil then break end | |
422 | wait() | |
423 | end | |
424 | mouse.Icon = "rbxasset://textures\\GunCursor.png" | |
425 | removeParts("holster") | |
426 | makeParts("hand") | |
427 | local weapon = Instance.new("ObjectValue") | |
428 | weapon.Name = "WeaponActivated" | |
429 | weapon.Value = script.Parent | |
430 | weapon.Parent = Player.Character | |
431 | DisableLimb(1, Player.Character) | |
432 | SetAngle(1, math.rad(200), Player.Character) | |
433 | mouse.Button1Down:connect(function() onButton1Down(mouse) end) | |
434 | mouse.Button1Up:connect(function() onButton1Up(mouse) end) | |
435 | mouse.KeyDown:connect(function(key) onKeyDown(key, mouse) end) | |
436 | end | |
437 | ||
438 | ||
439 | function onDeselected(mouse) | |
440 | if selected == false then return end | |
441 | selected = false | |
442 | while Button1Down == true or thrown == true do | |
443 | wait() | |
444 | end | |
445 | if Player.Character:FindFirstChild("WeaponActivated") ~= nil then | |
446 | if Player.Character.WeaponActivated.Value == script.Parent then | |
447 | Player.Character.WeaponActivated:Remove() | |
448 | end | |
449 | end | |
450 | while Player.Character:FindFirstChild("WeaponActivated") ~= nil do | |
451 | if Player.Character.WeaponActivated.Value == nil then break end | |
452 | if pcall(function() if Player.Character.WeaponActivated.Value.Parent == nil then return true end end) then break end | |
453 | wait() | |
454 | end | |
455 | removeParts("hand") | |
456 | makeParts("holster") | |
457 | SetAngle(1, 0, Player.Character) | |
458 | EnableLimb(1, Player.Character) | |
459 | end | |
460 | ||
461 | ||
462 | if script.Parent.className ~= "HopperBin" then | |
463 | if Player == nil then print("Error: Player not found!") return end | |
464 | Tool = Instance.new("HopperBin") | |
465 | Tool.Name = Name | |
466 | Tool.Parent = Player.Backpack | |
467 | script.Name = "Main" | |
468 | script.Parent = Tool | |
469 | elseif script.Parent.className == "HopperBin" then | |
470 | while script.Parent.Parent.className ~= "Backpack" do | |
471 | wait() | |
472 | end | |
473 | Player = script.Parent.Parent.Parent | |
474 | makeParts("holster") | |
475 | script.Parent.Selected:connect(onSelected) | |
476 | script.Parent.Deselected:connect(onDeselected) | |
477 | end |