Skip to content

Tool

Create()

Description:
    Creates a new tool object with default values.

Parameters:
    None

Realm:
    Shared

Returns:
    table – The newly created tool object.

Example Usage:
    -- Create a table for a custom door tool mode
    local tool = ToolGunMeta:Create()
    tool.Mode = "lia_dooredit"

CreateConVars()

Description:
    Creates client and server ConVars for this tool.

Parameters:
    None

Realm:
    Shared

Returns:
    None – This function does not return a value.

Example Usage:
    -- Ensure console variables exist for configuration
    tool:CreateConVars()

GetServerInfo(property)

Description:
    Returns the server ConVar for the given property.

Parameters:
    property (string) – Property name.

Realm:
    Shared

Returns:
    ConVar – The server ConVar object.

Example Usage:
    -- Check if the server allows using this tool
    local allow = tool:GetServerInfo("allow_use"):GetBool()

BuildConVarList()

Description:
    Returns a table of client ConVars prefixed by the tool mode.

Parameters:
    None

Realm:
    Shared

Returns:
    table – Table of convars.

Example Usage:
    -- Get a table of client ConVars for networking
    local cvars = tool:BuildConVarList()

GetClientInfo(property)

Description:
    Retrieves a client ConVar value as a string.

Parameters:
    property (string) – ConVar name without mode prefix.

Realm:
    Shared

Returns:
    string – The value stored in the ConVar.

Example Usage:
    -- Get the client's chosen material from a ConVar
    local mat = tool:GetClientInfo("material")

GetClientNumber(property, default)

Description:
    Retrieves a numeric client ConVar value.

Parameters:
    property (string) – ConVar name without mode prefix.
    default (number) – Value returned if the ConVar doesn't exist.

Realm:
    Shared

Returns:
    number – The numeric value of the ConVar.

Example Usage:
    -- Read the numeric power setting with a fallback
    local power = tool:GetClientNumber("power", 10)

Allowed()

Description:
    Determines whether this tool is allowed to be used.

Parameters:
    None

Realm:
    Shared

Returns:
    boolean – True if the tool is allowed.

Example Usage:
    -- Check if the player can use the current tool
    if tool:Allowed() then
        tool:GetOwner():ChatPrint("Tool is permitted!")
        hook.Run("PlayerToolPermitted", tool:GetOwner(), tool:GetMode())
    else
        tool:GetOwner():ChatPrint("Tool usage blocked.")
    end

Init()

Description:
    Placeholder for tool initialization.

Parameters:
    None

Realm:
    Shared
Returns:
    None – This function does not return a value.

Example Usage:
    -- Prepare the tool for use
    local result = tool:Init()

GetMode()

Description:
    Gets the current tool mode string.

Parameters:
    None

Realm:
    Shared

Returns:
    string – Tool mode name.

Example Usage:
    -- Retrieve the tool's active mode string
    local result = tool:GetMode()

GetSWEP()

Description:
    Returns the SWEP associated with this tool.

Parameters:
    None

Realm:
    Shared

Returns:
    SWEP – The tool's weapon entity.

Example Usage:
    -- Obtain the weapon entity representing this tool
    local result = tool:GetSWEP()

GetOwner()

Description:
    Retrieves the tool owner's player object.

Parameters:
    None

Realm:
    Shared

Returns:
    Player – Owner of the tool.

Example Usage:
    -- Reference the player who deployed the tool
    local result = tool:GetOwner()

GetWeapon()

Description:
    Retrieves the weapon entity this tool is attached to.

Parameters:
    None

Realm:
    Shared

Returns:
    Weapon – The weapon object.

Example Usage:
    -- Access the underlying weapon object
    local result = tool:GetWeapon()

LeftClick()

Description:
    Handles the left-click action. Override for custom behavior.

Parameters:
    None

Realm:
    Shared

Returns:
    boolean – False by default.

Example Usage:
    -- Attempt the primary tool action
    local result = tool:LeftClick()

RightClick()

Description:
    Handles the right-click action. Override for custom behavior.

Parameters:
    None

Realm:
    Shared

Returns:
    boolean – False by default.

Example Usage:
    -- Attempt the secondary tool action
    local result = tool:RightClick()

Reload()

Description:
    Clears stored objects when the tool reloads.

Parameters:
    None

Realm:
    Shared
Returns:
    None – This function does not return a value.

Example Usage:
    -- Clear saved objects when reloading the tool
    local result = tool:Reload()

Deploy()

Description:
    Called when the tool is equipped. Releases ghost entity.

Parameters:
    None

Realm:
    Shared
Returns:
    None – This function does not return a value.

Example Usage:
    -- Equip the tool and spawn its ghost entity
    local result = tool:Deploy()

Holster()

Description:
    Called when the tool is holstered. Releases ghost entity.

Parameters:
    None

Realm:
    Shared
Returns:
    None – This function does not return a value.

Example Usage:
    -- Unequip the tool and remove its ghost entity
    local result = tool:Holster()

Think()

Description:
    Called every tick; releases ghost entities by default.

Parameters:
    None

Realm:
    Shared
Returns:
    None – This function does not return a value.

Example Usage:
    -- Run per-tick logic for the active tool
    local result = tool:Think()

CheckObjects()

Description:
    Validates stored objects and clears them if invalid.

Parameters:
    None

Realm:
    Shared
Returns:
    None – This function does not return a value.

Example Usage:
    -- Validate all stored objects each tick
    local result = tool:CheckObjects()

ClearObjects()

Description:
    Removes all stored objects from the tool.

Parameters:
    None

Realm:
    Shared
Returns:
    None – This function does not return a value.

Example Usage:
    -- Remove any objects the tool is storing
    local result = tool:ClearObjects()

ReleaseGhostEntity()

Description:
    Removes the ghost entity used for previewing placements.

Parameters:
    None

Realm:
    Shared
Returns:
    None – This function does not return a value.

Example Usage:
    -- Remove the placement preview entity
    local result = tool:ReleaseGhostEntity()