0% found this document useful (0 votes)
54 views

Flash Bang

Uploaded by

Decri Kivon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views

Flash Bang

Uploaded by

Decri Kivon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 11

--[[

Flash Grenade
Blinds anyone unfortunate enough to be near it.
--]]

if script == nil then return end

ModelName = "Flash Grenade"


Player = Game.Players.LocalPlayer
Selected = false
Connected = false
Button1Down = false
CanUse = true
Thrown = false

function CheckPlayer()
if Player.Character == nil then return false end
if Player.Character:FindFirstChild("Torso") == nil or
Player.Character:FindFirstChild("Right Arm") == nil or
Player.Character:FindFirstChild("Humanoid") == nil then return false end
if Player.Character.Humanoid.Health <= 0 then return false end
return true
end

function tagHumanoid(humanoid)
local tag = Instance.new("ObjectValue")
tag.Name = "creator"
tag.Value = Player
tag.Parent = humanoid
local tag = Instance.new("StringValue")
tag.Name = "creatorType1"
tag.Value = Name
tag.Parent = humanoid
local tag = Instance.new("StringValue")
tag.Name = "creatorType2"
tag.Value = "blown up"
tag.Parent = humanoid
end

function playSound(id,parent,volume,pitch)
local sound = Instance.new("Sound",parent or workspace)
sound.SoundId = "http://www.roblox.com/asset?id="..id
sound.Volume = volume or 1
sound.Pitch = pitch or 1
coroutine.wrap(function()
wait()
sound:Play()
wait(10)
sound:Stop()
sound:Destroy()
end)()
return sound
end
function CreateParts(Parent, Format)
if Parent == nil then return end
local Parts = Instance.new("Model")
Parts.Name = ModelName
if Format == 1 then
Parts.Name = Parts.Name.. " (Holstered)"
end
Parts.Parent = Parent

local Handle = Instance.new("Part")


Handle.Name = "Handle"
Handle.BrickColor = BrickColor.new("Medium stone grey")
Handle.TopSurface = 0
Handle.BottomSurface = 0
Handle.FormFactor = "Custom"
Handle.Size = Vector3.new(0.4, 1, 0.4)
Handle.Parent = Parts
Instance.new("CylinderMesh", Handle)
local Weld = Instance.new("Weld")
Weld.Part0 = Handle
if Format == 1 then
Weld.Part1 = Player.Character:FindFirstChild("Left Leg")
Weld.C0 = CFrame.new(0.7, 0, 0.75) *
CFrame.fromEulerAnglesXYZ(math.rad(90), 0, 0)
elseif Format == 2 then
Weld.Part1 = Player.Character:FindFirstChild("Right Arm")
Weld.C0 = CFrame.new(0, 0, 1.2) *
CFrame.fromEulerAnglesXYZ(math.rad(90), 0, 0)
end
Weld.Parent = Weld.Part0

local Part = Instance.new("Part")


Part.Name = "Stripe"
Part.BrickColor = BrickColor.new("New Yeller")
Part.TopSurface = 0
Part.BottomSurface = 0
Part.FormFactor = "Custom"
Part.Size = Vector3.new(0.41, 0.4, 0.41)
Part.Parent = Parts
Instance.new("CylinderMesh", Part)
local Weld = Instance.new("Weld")
Weld.Part0 = Part
Weld.Part1 = Handle
Weld.Parent = Weld.Part0

local Part = Instance.new("Part")


Part.Name = "Pin Holder"
Part.BrickColor = BrickColor.new("Dark stone grey")
Part.TopSurface = 0
Part.BottomSurface = 0
Part.FormFactor = "Custom"
Part.Size = Vector3.new(0.2, 0.4, 0.2)
Part.Parent = Parts
Instance.new("CylinderMesh", Part)
local Weld = Instance.new("Weld")
Weld.Part0 = Part
Weld.Part1 = Handle
Weld.C0 = CFrame.new(0, -0.55, 0)
Weld.Parent = Weld.Part0

local MasterPart2 = Instance.new("Part")


MasterPart2.Name = "Pin"
MasterPart2.BrickColor = BrickColor.new("Dark stone grey")
MasterPart2.TopSurface = 0
MasterPart2.BottomSurface = 0
MasterPart2.FormFactor = "Custom"
MasterPart2.Size = Vector3.new(0.2, 0.2, 0.2)
MasterPart2.Parent = Parts
local Mesh = Instance.new("SpecialMesh", MasterPart2)
Mesh.MeshType = "Brick"
Mesh.Scale = Vector3.new(0.3, 0.1, 0.1)
local Weld = Instance.new("Weld")
Weld.Part0 = MasterPart2
Weld.Part1 = Handle
Weld.C0 = CFrame.new(0.125, -0.6, 0)
Weld.Parent = Weld.Part0

local Part = Instance.new("Part")


Part.Name = "Pin Ring"
Part.BrickColor = BrickColor.new("Dark stone grey")
Part.TopSurface = 0
Part.BottomSurface = 0
Part.FormFactor = "Custom"
Part.Size = Vector3.new(0.2, 0.2, 0.2)
Part.Parent = Parts
Instance.new("CylinderMesh", Part).Scale = Vector3.new(0.75, 0.1, 0.75)
local Weld = Instance.new("Weld")
Weld.Part0 = Part
Weld.Part1 = MasterPart2
Weld.C0 = CFrame.new(0.1, 0, 0) * CFrame.fromEulerAnglesXYZ(math.rad(90), 0,
0)
Weld.Parent = Weld.Part0
--[[local Part = Instance.new("Part")
Part.Name = "Source"
Part.TopSurface = 0
Part.BottomSurface = 0
Part.FormFactor = "Custom"
Part.Size = Vector3.new(0.2, 0.2, 0.2)
Part.CanCollide = false
Part.Transparency = 0
Part.Parent = Parts
local Weld = Instance.new("Weld")
Weld.Part0 = Part
Weld.Part1 = MasterPart1
Weld.C0 = CFrame.new(0, 5, 0.2)
Weld.Parent = Weld.Part0]]--

for _, Part in pairs(Parts:GetChildren()) do


Part.Locked = true
Part.CanCollide = false
end
end

function RemoveParts(Parent, Format)


if Format == 1 then
pcall(function() Parent[ModelName.. " (Holstered)"]:Remove() end)
elseif Format == 2 then
pcall(function() Parent[ModelName]:Remove() end)
end
end

function SetAngle(Joint, Angle, Character)


if Character == nil then return false end
local Joints = {
Character.Torso:FindFirstChild("Right Shoulder 2"),
Character.Torso:FindFirstChild("Left Shoulder 2"),
Character.Torso:FindFirstChild("Right Hip 2"),
Character.Torso:FindFirstChild("Left Hip 2")
}
if Joints[Joint] == nil then return false end
if Joint == 1 or Joint == 3 then
Joints[Joint].DesiredAngle = Angle
end
if Joint == 2 or Joint == 4 then
Joints[Joint].DesiredAngle = -Angle
end
end

function ForceAngle(Joint, Angle, Character)


if Character == nil then return false end
local Joints = {
Character.Torso:FindFirstChild("Right Shoulder 2"),
Character.Torso:FindFirstChild("Left Shoulder 2"),
Character.Torso:FindFirstChild("Right Hip 2"),
Character.Torso:FindFirstChild("Left Hip 2")
}
if Joints[Joint] == nil then return false end
if Joint == 1 or Joint == 3 then
Joints[Joint].DesiredAngle = Angle
Joints[Joint].CurrentAngle = Angle
end
if Joint == 2 or Joint == 4 then
Joints[Joint].DesiredAngle = -Angle
Joints[Joint].CurrentAngle = -Angle
end
end

function SetSpeed(Joint, Speed, Character)


if Character == nil then return false end
local Joints = {
Character.Torso:FindFirstChild("Right Shoulder 2"),
Character.Torso:FindFirstChild("Left Shoulder 2"),
Character.Torso:FindFirstChild("Right Hip 2"),
Character.Torso:FindFirstChild("Left Hip 2")
}
if Joints[Joint] == nil then return false end
Joints[Joint].MaxVelocity = Speed
end

function DisableLimb(Limb, Character)


if Character == nil then return false end
if Character:FindFirstChild("Torso") == nil then return false end
local Joints = {
Character.Torso:FindFirstChild("Right Shoulder"),
Character.Torso:FindFirstChild("Left Shoulder"),
Character.Torso:FindFirstChild("Right Hip"),
Character.Torso:FindFirstChild("Left Hip")
}
local Limbs = {
Character:FindFirstChild("Right Arm"),
Character:FindFirstChild("Left Arm"),
Character:FindFirstChild("Right Leg"),
Character:FindFirstChild("Left Leg")
}
if Joints[Limb] == nil then return false end
if Limbs[Limb] == nil then return false end
local Joint = Instance.new("Motor6D")
Joint.Parent = Character.Torso
Joint.Part0 = Character.Torso
Joint.Part1 = Limbs[Limb]
if Limb == 1 then
Joint.C0 = CFrame.new(1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(90), 0)
Joint.C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(90), 0)
Joint.Name = "Right Shoulder 2"
elseif Limb == 2 then
Joint.C0 = CFrame.new(-1.5, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(-90), 0)
Joint.C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(-90), 0)
Joint.Name = "Left Shoulder 2"
elseif Limb == 3 then
Joint.C0 = CFrame.new(0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(90), 0)
Joint.C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(90), 0)
Joint.Name = "Right Hip 2"
elseif Limb == 4 then
Joint.C0 = CFrame.new(-0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(-90), 0)
Joint.C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(-90), 0)
Joint.Name = "Left Hip 2"
end
Joint.MaxVelocity = Joints[Limb].MaxVelocity
Joint.CurrentAngle = Joints[Limb].CurrentAngle
Joint.DesiredAngle = Joints[Limb].DesiredAngle
Joints[Limb]:Remove()
end

function ResetLimbCFrame(Limb, Character)


if Character == nil then return false end
if Character.Parent == nil then return false end
if Character:FindFirstChild("Torso") == nil then return false end
local Joints = {
Character.Torso:FindFirstChild("Right Shoulder 2"),
Character.Torso:FindFirstChild("Left Shoulder 2"),
Character.Torso:FindFirstChild("Right Hip 2"),
Character.Torso:FindFirstChild("Left Hip 2")
}
local Limbs = {
Character:FindFirstChild("Right Arm"),
Character:FindFirstChild("Left Arm"),
Character:FindFirstChild("Right Leg"),
Character:FindFirstChild("Left Leg")
}
if Joints[Limb] == nil then return false end
if Limbs[Limb] == nil then return false end
if Limb == 1 then
Joints[Limb].C0 = CFrame.new(1.5, 0.5, 0) *
CFrame.fromEulerAnglesXYZ(0, math.rad(90), 0)
Joints[Limb].C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(90), 0)
elseif Limb == 2 then
Joints[Limb].C0 = CFrame.new(-1.5, 0.5, 0) *
CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
Joints[Limb].C1 = CFrame.new(0, 0.5, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(-90), 0)
elseif Limb == 3 then
Joints[Limb].C0 = CFrame.new(0.5, -1, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(90), 0)
Joints[Limb].C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(90), 0)
elseif Limb == 4 then
Joints[Limb].C0 = CFrame.new(-0.5, -1, 0) *
CFrame.fromEulerAnglesXYZ(0, math.rad(-90), 0)
Joints[Limb].C1 = CFrame.new(0, 1, 0) * CFrame.fromEulerAnglesXYZ(0,
math.rad(-90), 0)
end
end

function EnableLimb(Limb, Character)


if Character == nil then return false end
if Character:FindFirstChild("Torso") == nil then return false end
local Joints = {
Character.Torso:FindFirstChild("Right Shoulder 2"),
Character.Torso:FindFirstChild("Left Shoulder 2"),
Character.Torso:FindFirstChild("Right Hip 2"),
Character.Torso:FindFirstChild("Left Hip 2")
}
local Limbs = {
Character:FindFirstChild("Right Arm"),
Character:FindFirstChild("Left Arm"),
Character:FindFirstChild("Right Leg"),
Character:FindFirstChild("Left Leg")
}
if Joints[Limb] == nil then return false end
if Limbs[Limb] == nil then return false end
if Limb == 1 then
Joints[Limb].Name = "Right Shoulder"
elseif Limb == 2 then
Joints[Limb].Name = "Left Shoulder"
elseif Limb == 3 then
Joints[Limb].Name = "Right Hip"
elseif Limb == 4 then
Joints[Limb].Name = "Left Hip"
end
Animate = Character:FindFirstChild("Animate")
if Animate == nil then return false end
Animate = Animate:Clone()
Character.Animate:Remove()
Animate.Parent = Character
end

function onButton1Down(Mouse)
if Button1Down == true then return end
Button1Down = true
if CheckPlayer() == false or Primed == true or Thrown == true or CanUse ==
false then return end
CanUse = false
Primed = true
playSound(2697295,Player.Character.Torso,1,1)
pcall(function() Player.Character[ModelName].Pin.Weld:Remove() end)
for _, Part in pairs(Player.Character[ModelName]:GetChildren()) do
pcall(function()
if string.match(Part.Name, "Pin") then
Part.CanCollide = true
end
end)
end
Instance.new("Configuration", Player.Character[ModelName].Handle).Name =
"CanExplode"
function explode()
MaxDistance = 50
wait(4)
local Sound = Instance.new("Sound")
Sound.Name = "Bang"
Sound.SoundId = "rbxasset://sounds/collide.wav"
Sound.Volume = 1
Sound.Pitch = 3
Sound.Parent = Handle
Sound:Play()
game:GetService("Debris"):AddItem(Sound, 0.1)
local Part = Instance.new("Part",Handle)
Part.Name = "Bang"
Part.BrickColor = BrickColor.new("Institutional white")
Part.TopSurface = 0
Part.BottomSurface = 0
Part.CanCollide = false
Part.Anchored = true
Part.FormFactor = "Custom"
Part.Size = Vector3.new(1, 1, 1)
Part.CFrame = Handle.CFrame
Instance.new("SpecialMesh", Part).MeshType = "Sphere"
coroutine.wrap(function()
for i = 0, 1, 0.15 do
Part.Mesh.Scale = Vector3.new(i, i, i) * (MaxDistance + 5)
Part.Transparency = i
wait()
end
Part:Remove()
end)()
local Smoke = Instance.new("Smoke", Handle)
Smoke.Color = Color3.new(0.8, 0.8, 0.8)
Smoke.Size = 15
Smoke.RiseVelocity = 10
Smoke.Opacity = 0.2
for _, Player in pairs(game:GetService("Players"):GetPlayers()) do
if Player.Character ~= nil then
if Player.Character:FindFirstChild("Head") ~= nil then
local Distance = (Player.Character.Head.Position -
Handle.Position).magnitude
if Distance < MaxDistance then
local StunGui = Instance.new("ScreenGui", Player.PlayerGui)
StunGui.Name = "StunGui"
local White = Instance.new("Frame", StunGui)
White.Name = "White"
White.BorderSizePixel = 0
White.BackgroundColor3 = Color3.new(1, 1, 1)
White.Size = UDim2.new(2, 0, 2, 0)
White.Position = UDim2.new(-0.5, 0, -0.5, 0)
coroutine.wrap(function()
wait(((MaxDistance - Distance) / MaxDistance) * 5)
for i = 0, 1, (Distance / MaxDistance) * 0.01 do
White.BackgroundTransparency = i
wait()
end
StunGui:Remove()
end)()
end
end
end
end
wait(1)
Smoke.Enabled = false
wait(5)
Handle:Remove()
end
Player.Character[ModelName].Changed:connect(function(Property)
if Property == "Parent" then
while CanUse == false do wait() end
EnableLimb(1, Player.Character)
--UpdateFirstPerson()
script.Parent:Remove()
end
end)
CanUse = true
end

function onButton1Up(Mouse)
if Button1Down == false then return end
Button1Down = false
if CanUse == false then return end
if Player.Character:FindFirstChild(ModelName) ~= nil and Thrown == false then
Thrown = true
SetSpeed(1, 0.75, Player.Character)
SetAngle(1, 0, Player.Character)
wait()
pcall(function() Player.Character[ModelName].Handle.Weld:Remove() end)
for _, Part in pairs(Player.Character[ModelName]:GetChildren()) do
pcall(function() Part.CanCollide = true end)
end
local BodyVelocity = Instance.new("BodyVelocity")
BodyVelocity.maxForce = Vector3.new(math.huge, math.huge, math.huge)
BodyVelocity.velocity = (Mouse.Hit.p -
Player.Character[ModelName].Handle.Position).unit * 75
BodyVelocity.Parent = Player.Character[ModelName].Handle
game:GetService("Debris"):AddItem(BodyVelocity, 0.1)
game:GetService("Debris"):AddItem(Player.Character[ModelName], 16)
Player.Character[ModelName].Parent = Workspace
wait(1)
explode()
end
end

function onKeyDown(Key, Mouse)


if Selected == false then return end
Key = Key:lower()
if Button1Down == false and CanUse == true and CheckPlayer() == true then
if Key == "q" then
if Mouse.Target == nil then return end
if CheckPlayer() == false then return end
local NewPlayer =
game:GetService("Players"):GetPlayerFromCharacter(Mouse.Target.Parent)
if NewPlayer == nil then return end
if NewPlayer.Character == nil then return end
if NewPlayer.Character:FindFirstChild("Torso") == nil then return
end
if (NewPlayer.Character.Torso.Position -
Player.Character.Torso.Position).magnitude > 10 then return end
onDeselected(Mouse)
wait()
RemoveParts(Player.Character, 1)
script.Parent.Parent = NewPlayer.Backpack
Player = NewPlayer
elseif Key == "g" then
CanUse = false
playSound(10209850,Player.Character.Torso,1,1)
SetSpeed(1, 0.75, Player.Character)
SetAngle(1, 0, Player.Character)
local HasHit = false
local _, HitConnection = pcall(function() return
Player.Character[ModelName].Handle.Touched:connect(function(Hit)
if HasHit == true or Hit:IsDescendantOf(Player.Character)
then return end
HasHit = true
playSound(46153268,Player.Character.Torso,1,1)
local Humanoid = Hit.Parent:FindFirstChild("Humanoid") or
Hit.Parent.Parent:FindFirstChild("Humanoid")
if Humanoid ~= nil then
tagHumanoid(Humanoid)
Humanoid:TakeDamage(7)
wait()
pcall(function() untagHumanoid(Humanoid) end)
end
end) end)
--CameraSlide(math.rad(-15), 0, 0.2)
pcall(function() HitConnection:disconnect() end)
SetSpeed(1, 0.5, Player.Character)
SetAngle(1, math.rad(200), Player.Character)
--CameraSlide(math.rad(15), 0, 0.25)
CanUse = true
end
end
end

function onSelected(Mouse)
if Selected == true or CanUse == false then return end
CanUse = false
while true do
if CheckPlayer() == true then
if Player.Character.Torso:FindFirstChild("Right Shoulder") ~= nil
then
break
end
end
wait(0.1)
end
Selected = true
RemoveParts(Player.Character, 1)
CreateParts(Player.Character, 2)
DisableLimb(1, Player.Character)
SetSpeed(1, 0.5, Player.Character)
SetAngle(1, math.rad(200), Player.Character)
Mouse.Icon = "rbxasset://textures\\GunCursor.png"
Mouse.Button1Down:connect(function() onButton1Down(Mouse) end)
Mouse.Button1Up:connect(function() onButton1Up(Mouse) end)
Mouse.KeyDown:connect(function(Key) onKeyDown(Key, Mouse) end)
CanUse = true
end

function onDeselected(Mouse)
if Selected == false or Primed == true then return end
Selected = false
while CanUse == false do wait() end
if Selected == true then return end
CanUse = false
RemoveParts(Player.Character, 2)
CreateParts(Player.Character, 1)
SetAngle(1, 0, Player.Character)
ResetLimbCFrame(1, Player.Character)
EnableLimb(1, Player.Character)
CanUse = true
end

if script.Parent.ClassName ~= "HopperBin" then


if Player == nil then print("Error: Player not found!") return end
Tool = Instance.new("HopperBin")
Tool.Name = ModelName
Tool.Parent = Player.Backpack
script.Name = "Main"
script.Parent = Tool
elseif script.Parent.ClassName == "HopperBin" and Connected == false then
Connected = true
Player = script.Parent.Parent.Parent
end wait() if script.Parent.ClassName == "HopperBin" then
while script.Parent.Parent.ClassName ~= "Backpack" do
wait()
end
script.Parent.Selected:connect(onSelected)
script.Parent.Deselected:connect(onDeselected)
CreateParts(Player.Character, 1)

end

You might also like