Laser Gun



Put this as a local script under the tool

local tool = script.Parent
local player = game:GetService("Players").LocalPlayer
 
tool.Equipped:Connect(function(mouse)
    
    mouse.Button1Down:Connect(function()
        print("Mouse pressed!")
        local ray = Ray.new(tool.Handle.CFrame.p, (mouse.Hit.p - tool.Handle.CFrame.p).unit * 300)
        local part, position = workspace:FindPartOnRay(ray, player.Character, false, true)
 
        local beam = Instance.new("Part", workspace)
        beam.BrickColor = BrickColor.new("Bright red")
        beam.FormFactor = "Custom"
        beam.Material = "Neon"
        beam.Transparency = 0.25
        beam.Anchored = true
        beam.Locked = true
        beam.CanCollide = false
 
        local distance = (tool.Handle.CFrame.p - position).magnitude
        beam.Size = Vector3.new(0.3, 0.3, distance)
        beam.CFrame = CFrame.new(tool.Handle.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(30)
            end
        end
    end)
end)