Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How do I stop gun from shooting when uneqipped?

Asked by
stupru 11
4 years ago

When I unequip my gun, it still shoots from the last place the shootPart was. Also, when spamming 1 (or whatever backpack slot its in) it shoots way faster than intended. This is my script:

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local tool = script.Parent


local mouseDown = false
local canPlay = true
local sound = script.Parent.shoot
local mouse = game.Players.LocalPlayer:GetMouse()


mouse.Button1Down:Connect(function()
    mouseDown = true
end)

mouse.Button1Up:Connect(function()
    mouseDown = false
end)


tool.Equipped:Connect(function()

    while wait(0.2) do
        if mouseDown then
            if canPlay then
                canPlay = false

                local ray = Ray.new(tool.shootPart.CFrame.p, (mouse.Hit.p - tool.shootPart.CFrame.p).unit * 300)
                local part, position = workspace:FindPartOnRay(ray, player.Character, false, true)

                local beam = Instance.new("Part", workspace)
                beam.BrickColor = BrickColor.new("Brick yellow")
                beam.FormFactor = "Custom"
                beam.Material = "Neon"
                beam.Transparency = 0.5
                beam.Anchored = true
                beam.Locked = true
                beam.CanCollide = false

                local distance = (tool.shootPart.CFrame.p - position).magnitude
                beam.Size = Vector3.new(0.1, 0.1, distance)
                beam.CFrame = CFrame.new(tool.shootPart.CFrame.p, position) * CFrame.new(0, 0, -distance / 2)

                game:GetService("Debris"):AddItem(beam, 0.1)

                if part then
                    local humanoid = part.Parent:FindFirstChild("Humanoid")

                    if not humanoid then
                        humanoid = part.Parent.Parent:FindFirstChild("Humanoid")
                    end

                    if humanoid then
                        humanoid:TakeDamage(49)
                    end
                end

                sound:Play()

                canPlay = true
            end
        end
    end
end)

I'm a fairly new scripter so any help is appreciated.

2 answers

Log in to vote
0
Answered by 4 years ago

Just have an "equipped" variable that you have to check before shooting that updates when the tool is equipped and unequipped which tools have an event for both. For example:

local equipped = false
local tool = script.Parent

tool.Equipped:Connect(function()
    equipped = true
end

tool.Unequipped:Connect(function()
    equipped = false
end
Ad
Log in to vote
0
Answered by
0msh 333 Moderation Voter
4 years ago

use tool.Activated or check if the tool parent is a player/have a humanoid before it shoots

Tool.Activated can be found here: https://developer.roblox.com/en-us/api-reference/event/Tool/Activated

Answer this question