# Tool

Roblox Engine API class from Roblox Studio 0.744.0.7441077 (version-7aaa6838d36c4448).

- Inherits from, nearest first: [BackpackItem](https://rapi.sleaze.dev/classes/BackpackItem.md), [Model](https://rapi.sleaze.dev/classes/Model.md), [PVInstance](https://rapi.sleaze.dev/classes/PVInstance.md), [Instance](https://rapi.sleaze.dev/classes/Instance.md), [Object](https://rapi.sleaze.dev/classes/Object.md)
- Subclasses: [Flag](https://rapi.sleaze.dev/classes/Flag.md)
- Memory category: BaseParts
- HTML page: https://rapi.sleaze.dev/classes/Tool/
- Roblox documentation: https://create.roblox.com/docs/reference/engine/classes/Tool

An object, such as a weapon, that can be equipped by a [`Humanoid`](https://rapi.sleaze.dev/classes/Humanoid.md).

## Properties

### ToolTip

```luau
Tool.ToolTip: string = ""
```

- Tags: Read capabilities: Input

Controls the message displayed when the player's mouse hovers over the tool in their backpack.

### CanBeDropped

```luau
Tool.CanBeDropped: boolean = true
```

- Tags: Read capabilities: Input

Controls whether the player can drop the tool.

### ManualActivationOnly

```luau
Tool.ManualActivationOnly: boolean = false
```

- Tags: Read capabilities: Input

Controls whether the [`Tool`](https://rapi.sleaze.dev/classes/Tool.md) can be activated without executing [`Tool:Activate()`](https://rapi.sleaze.dev/classes/Tool.md).

### RequiresHandle

```luau
Tool.RequiresHandle: boolean = true
```

- Tags: Read capabilities: Input

Determines whether a [`Tool`](https://rapi.sleaze.dev/classes/Tool.md) functions without a handle.

### Enabled

```luau
Tool.Enabled: boolean = true
```

- Tags: Read capabilities: Input, Simulation access

Relates to whether or not the tool can be used.

### Grip

```luau
Tool.Grip: CFrame = CFrame.identity
```

- Tags: Read capabilities: Input, Simulation access

Stores the tool's "grip" properties as one [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md).

### GripForward

```luau
Tool.GripForward: Vector3 = Vector3.new(-0, -0, -1)
```

- Tags: Hidden, Not replicated, Read capabilities: Input

Represents the `R02`, `R12`, and `R22` values of the grip [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md) rotation matrix.

### GripPos

```luau
Tool.GripPos: Vector3 = Vector3.zero
```

- Tags: Hidden, Not replicated, Read capabilities: Input

The positional offset of the tool's weld matrix.

### GripRight

```luau
Tool.GripRight: Vector3 = Vector3.new(1, 0, 0)
```

- Tags: Hidden, Not replicated, Read capabilities: Input

Represents the `R00`, `R10`, and `R20` values of the grip [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md) rotation matrix.

### GripUp

```luau
Tool.GripUp: Vector3 = Vector3.new(0, 1, 0)
```

- Tags: Hidden, Not replicated, Read capabilities: Input

Represents the `R01`, `R11`, and `R21` values of the grip [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md) rotation matrix.

## Methods

### Activate

```luau
Tool:Activate()
```

- Tags: Capabilities: Input

Simulates activation of the [`Tool`](https://rapi.sleaze.dev/classes/Tool.md).

### Deactivate

```luau
Tool:Deactivate()
```

- Tags: Capabilities: Input

Simulates deactivation of the [`Tool`](https://rapi.sleaze.dev/classes/Tool.md).

## Events

### Activated

```luau
Tool.Activated: RBXScriptSignal<()>
```

- Tags: Capabilities: Input

Fires when the player clicks while the tool is equipped.

### Deactivated

```luau
Tool.Deactivated: RBXScriptSignal<()>
```

- Tags: Capabilities: Input

Fires when the player releases their click while the tool is equipped and activated.

### Equipped

```luau
Tool.Equipped: RBXScriptSignal<(mouse: Mouse)>
```

- Tags: Capabilities: Input

Fires when the tool is equipped.

### Unequipped

```luau
Tool.Unequipped: RBXScriptSignal<()>
```

- Tags: Capabilities: Input

Fires when the tool is unequipped.

### VRLaserPointerClicked

```luau
Tool.VRLaserPointerClicked: RBXScriptSignal<(player: Player)>
```

- Tags: Hidden, Roblox engine security, Capabilities: Input

## Inherited members

- From [BackpackItem](https://rapi.sleaze.dev/classes/BackpackItem.md): `TextureContent`, `TextureId`
- From [Model](https://rapi.sleaze.dev/classes/Model.md): `LevelOfDetail`, `ModelStreamingMode`, `LodEntity`, `ModelMeshCFrame`, `ModelMeshData`, `ModelMeshSize`, `NeedsPivotMigration`, `SlimAnimationTarget`, `SlimHash`, `PrimaryPart`, `Scale`, `ScaleFactor`, `WorldPivot`, `WorldPivotData`, `AddPersistentPlayer`, `GetBoundingBox`, `GetExtentsSize`, `GetPersistentPlayers`, `GetScale`, `MoveTo`, `RemovePersistentPlayer`, `ScaleTo`, `TranslateBy`, `BreakJoints`, `GetModelCFrame`, `GetModelSize`, `GetPrimaryPartCFrame`, `MakeJoints`, `ResetOrientationToIdentity`, `SetIdentityOrientation`, `SetPrimaryPartCFrame`, `breakJoints`, `makeJoints`, `move`, `moveTo`
- From [PVInstance](https://rapi.sleaze.dev/classes/PVInstance.md): `Pivot Offset`, `Origin`, `GetPivot`, `PivotTo`
- From [Instance](https://rapi.sleaze.dev/classes/Instance.md): `Archivable`, `archivable`, `Attributes`, `AttributesReplicate`, `AttributesSerialize`, `HistoryId`, `Name`, `Parent`, `PredictionMode`, `PropertyStatusStudio`, `RobloxLocked`, `SerializedOverrides`, `SourceAssetId`, `Tags`, `UniqueId`, `numExpectedDirectChildren`, `DataCost`, `Capabilities`, `DefinesCapabilities`, `IsInSandbox`, `Sandboxed`, `AddTag`, `ClearAllChildren`, `Clone`, `Destroy`, `FindFirstAncestor`, `FindFirstAncestorOfClass`, `FindFirstAncestorWhichIsA`, `FindFirstChild`, `FindFirstChildOfClass`, `FindFirstChildWhichIsA`, `FindFirstDescendant`, `GetActor`, `GetAttribute`, `GetAttributeChangedSignal`, `GetAttributes`, `GetChildren`, `GetDebugId`, `GetDescendants`, `GetFullName`, `GetStyled`, `GetStyledPropertyChangedSignal`, `GetTags`, `HasTag`, `IsAncestorOf`, `IsDescendantOf`, `IsPropertyModified`, `QueryDescendants`, `RemoveTag`, `ResetPropertyToDefault`, `SetAttribute`, `WaitForChild`, `Remove`, `children`, `clone`, `destroy`, `findFirstChild`, `getChildren`, `isDescendantOf`, `remove`, `AncestryChanged`, `AttributeChanged`, `ChildAdded`, `ChildRemoved`, `DescendantAdded`, `DescendantRemoving`, `Destroying`, `StyledPropertiesChanged`, `childAdded`
- From [Object](https://rapi.sleaze.dev/classes/Object.md): `ClassName`, `className`, `GetPropertyChangedSignal`, `IsA`, `isA`, `Changed`
