> ## Documentation Index
> Fetch the complete documentation index at: https://docs.redutzu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Client exports

> Exports you can call from your own client scripts.

Call these from a client script, such as `exports['redutzu-mdt']:Open()`.> [!NOTE]
>
> Custom MDT pages have their own guide: [`RegisterPage` and `UnregisterPage`](https://docs.redutzu.com/redutzu-mdt/guides/custom-pages).## MDT### OpenOpen the MDT for the local player.```lua theme={null}
exports['redutzu-mdt']:Open()
```### CloseClose the MDT. Does nothing if it's already closed.```lua theme={null}
exports['redutzu-mdt']:Close()
```### IsOpenedCheck whether the MDT is open.```lua theme={null}
local isOpened = exports['redutzu-mdt']:IsOpened()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Admin panel### OpenAdminOpen the admin panel. Players who aren't MDT admins get an `ERRORS.NOT_ADMIN` toast.```lua theme={null}
exports['redutzu-mdt']:OpenAdmin()
```### CloseAdminClose the admin panel and stop any admin tool that's running.```lua theme={null}
exports['redutzu-mdt']:CloseAdmin()
```## Interactions menu### IsInteractionsMenuOpenCheck whether the interactions menu is open. The menu keeps game input active, so use this to block your own keys.```lua theme={null}
local isInteractionsMenuOpen = exports['redutzu-mdt']:IsInteractionsMenuOpen()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RegisterInteractionPageAdd your own page to the interactions menu. `build` returns what the page shows, and `onAction` runs when the player picks a row. Pages are removed when your resource stops.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:RegisterInteractionPage(page)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

```lua Example theme={null}
exports['redutzu-mdt']:RegisterInteractionPage({
    id = 'k9',
    label = 'K9',
    build = function()
        return {
            rows = {
                { id = 'follow', kind = 'action', label = 'Follow', icon = 'dog' },
                { id = 'search', kind = 'action', label = 'Search vehicle', close = true }
            }
        }
    end,
    onAction = function(rowId)
        TriggerEvent('my-k9:command', rowId)
    end
})
```### RemoveInteractionPageRemove a page your resource registered.```lua theme={null}
local success = exports['redutzu-mdt']:RemoveInteractionPage(id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RefreshInteractionPageRebuild a page if it's on screen. Call it when the page's data changes.```lua theme={null}
exports['redutzu-mdt']:RefreshInteractionPage(id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Officer### GetCallsignGet the local player's callsign.```lua theme={null}
local callsign = exports['redutzu-mdt']:GetCallsign()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetStatusGet the local player's status.```lua theme={null}
local status = exports['redutzu-mdt']:GetStatus()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetOfficerDataGet a player's duty, callsign and status. Leave `src` out for the local player.```lua theme={null}
local officerData = exports['redutzu-mdt']:GetOfficerData(src)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Radio### GetPrimaryChannelGet the frequency the local player talks on.```lua theme={null}
local primaryChannel = exports['redutzu-mdt']:GetPrimaryChannel()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetJoinedChannelsList every frequency the local player has joined, including ones they only listen to.```lua theme={null}
local joinedChannels = exports['redutzu-mdt']:GetJoinedChannels()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Cameras### IsViewingCameraCheck whether a CCTV, bodycam or dashcam view, or the photo camera, is on screen. Use it to skip your own key handling, such as a pause menu or phone, while a camera is open.```lua theme={null}
local isViewingCamera = exports['redutzu-mdt']:IsViewingCamera()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetClosestCameraFind the closest CCTV camera near the local player.```lua theme={null}
local netId, entity, distance = exports['redutzu-mdt']:GetClosestCamera(maxDistance)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### IsBodycamEnabledCheck whether the local player's bodycam is on.```lua theme={null}
local isBodycamEnabled = exports['redutzu-mdt']:IsBodycamEnabled()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### IsDashcamActiveCheck whether a vehicle's dashcam is on.```lua theme={null}
local isDashcamActive = exports['redutzu-mdt']:IsDashcamActive(vehicle)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.