# Exports & Events

***

### Exports

<details>

<summary><code>IsPlayerDrunk</code></summary>

```lua
exports['mst_breathalyzer']:isPlayerDrunk(targetId)
```

The **isPlayerDrunk** export allows you to check if any player is currently drunk. This export can check both the local player and other players.

**How to use?**

To check if the local player is drunk, use the following code:

```lua
-- Check if specific player is drunk
local targetId = 5
local isDrunk = exports['mst_breathalyzer']:isPlayerDrunk(targetId)
if isDrunk then
    print("Player " .. targetId .. " is currently drunk")
else
    print("Player " .. targetId .. " is sober")
end

-- Check if local player is drunk
local isLocalDrunk = exports['mst_breathalyzer']:isPlayerDrunk()
if isLocalDrunk then
    print("You are currently drunk")
else
    print("You are sober")
end
```

**Parameters:**

* `targetId` (number, optional): Target player's server ID. If omitted, checks local player.

**Return value**:

* Returns `true` if player is drunk (BAC > 0.50)
* Returns `false` if player is sober (BAC ≤ 0.50)

</details>

<details>

<summary><code>GetPlayerBAC</code></summary>

```lua
exports['mst_breathalyzer']:getPlayerBAC()
```

The **getPlayerBAC** export allows you to retrieve the current BAC level of the local player from the client. This export provides real-time information about the player's alcohol consumption.

**How to use?**

To get the local player's current BAC level, use the following code:

```lua
-- Get BAC of specific player
local targetId = 5
local targetBAC = exports['mst_breathalyzer']:getPlayerBAC(targetId)
if targetBAC then
    print("Player " .. targetId .. " BAC: " .. targetBAC)
    
    -- Check their drunk level
    if targetBAC <= 0.50 then
        print("Player " .. targetId .. " is sober")
    elseif targetBAC <= 1.00 then
        print("Player " .. targetId .. " is impaired")
    else
        print("Player " .. targetId .. " is drunk")
    end
else
    print("Player " .. targetId .. " BAC not available")
end

-- Get local player's BAC
local localBAC = exports['mst_breathalyzer']:getPlayerBAC()
if localBAC then
    print("Your BAC: " .. localBAC)
    
    if localBAC <= 0.50 then
        print("You are sober")
    elseif localBAC <= 1.00 then
        print("You are impaired")
    else
        print("You are drunk")
    end
else
    print("Your BAC not available")
end
```

**Parameters:**

* `targetId` (number, optional): Target player's server ID. If omitted, gets local player's BAC.

**Return value**:

* Returns `number` representing current BAC level (0.0 to 4.0)
* Returns `nil` if BAC data is not available

</details>

<details>

<summary><code>AddPlayerBAC</code></summary>

```lua
exports['mst_breathalyzer']:AddPlayerBAC(source, bacLevel)
```

The **AddPlayerBAC** export allows you to add a specific BAC level for a player from the server side. This export is useful for medical scripts, police interactions, or custom scenarios where you need to control a player's alcohol level programmatically.

**How to use?**

To set a player's BAC level, use the following code:

```lua
-- Set player's BAC to 0.5 (impaired level)
exports['mst_breathalyzer']:AddPlayerBAC(source, 0.5)

-- Set player's BAC to 0.0 (completely sober)
exports['mst_breathalyzer']:AddPlayerBAC(source, 0.0)

-- Set player's BAC to 2.0 (very drunk)
exports['mst_breathalyzer']:AddPlayerBAC(source, 2.0)
```

**Parameters:**

* `source` (number): The player's server ID
* `bacLevel` (number): The BAC level to set (0.0 to 4.0)

**Return value**:

* Returns `number` representing current BAC level (0.0 to 4.0)
* Returns `nil` if BAC data is not available

</details>

### Events

<details>

<summary><code>openUI</code></summary>

```lua
TriggerEvent('mst_breathalyzer:openUI')
```

The **mst\_breathalyzer:openUI** event allows you to open the breathalyzer interface. This event is useful for other scripts that need to force open the breathalyzer UI.

**How to use?**

To open the breathalyzer UI, use the following code:

```lua
-- Add breathalyzer option to qb-radialmenu
{
    id = 'breathalyzer',
    title = 'Breathalyzer',
    icon = 'wine-bottle',
    type = 'client',
    event = 'mst_breathalyzer:openUI',
    shouldClose = true
}
```

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mosotoscripts.com/scripts/mst_breathalyzer/exports-and-events.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
