> For the complete documentation index, see [llms.txt](https://docs.av-scripts.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.av-scripts.com/laptop-pack-v3/laptop-v3/exports.md).

# Exports

> In this page you will find some exports and events you can use from your external scripts to interact with av\_laptop.

{% tabs %}
{% tab title="Client" %}

### postMessage(name,data)

> Use this export to send a NUI message to your custom APP, requires to use the hook useNuiEvent() as listener.
>
> **params:**
>
> * **name**:`string` The event name.
> * **data**:`any` Data to receive
>
> ```lua
> -- EXAMPLE in the lua side
> exports['av_laptop']:postMessage("updateCrypto", 99)
> ```
>
> ```typescript
> // EXAMPLE in the Typescript side of app
> useNuiEvent('updateCrypto', (amount:number) => {
>     console.log(amount)
> })
> ```

### openApp(name,tablet)

> Open an APP directly without using the laptop item nor UI.
>
> *App name can be found in your config.lua > Config.App table > name*
>
> **params:**
>
> * **name**:`string` The app name
> * **tablet**:`boolean` Enable the tablet prop and animation
>
> **returns:**
>
> * **result**:`boolean`
>
> ```lua
> local appName = "business" -- or "cupcake" or "boosting", etc
> local opened = exports['av_laptop']:openApp(appName,true)
> print(opened)
> ```

### showLaptop(tablet,itemCheck)

> Use this export to open the laptop and set it as background while you run some other UI in front.
>
> **params:**
>
> * **tablet?** `boolean`: Enable the tablet prop and animation.
> * **itemCheck?** `boolean:` It will check if the player has the laptop item in their inventory and use the wallpaper for the interface. If the player does not have the item, it will return false and cancel the animation.
>
> ```lua
> -- Example using bl_ui minigames:
> RegisterCommand("minigame", function()
>     local hasLaptop = exports['av_laptop']:showLaptop(true,true)
>     if hasLaptop then
>         local success = exports.bl_ui:DigitDazzle(3, {
>             length = 4,
>             duration = 5000,
>         })
>         exports['av_laptop']:hideLaptop()
>     else
>         print("Player doesn't have laptop item")
>     end
> end)
> ```

<figure><img src="/files/h1FX7Qf7qXW0vfqWybEY" alt=""><figcaption></figcaption></figure>

**Note:** *Your minigame UI should have a z-index of 100 otherwise it will be hidden behind laptop UI.*

### hideLaptop()

> Use it to close laptop when opened using showLaptop() export.
>
> ```lua
> exports['av_laptop']:hideLaptop()
> ```

### getSerial()

> Use this export to retrieve the current laptop serial.
>
> **params:**
>
> * none
>
> **returns:**
>
> * string or false
>
> ```lua
> local serial = exports['av_laptop']:getSerial()
> print(serial) -- false or string
> ```

### Wifi()

> Use this export to get the current WiFi network the laptop is connected to.
>
> **returns:**
>
> * string or nil
>
> ```lua
> local WiFi = exports['av_laptop']:WiFi()
> print(WiFi)
> ```

### refreshApps()

> Refresh the laptop apps.
>
> ```lua
> exports['av_laptop']:refreshApps()
> ```

### toggle()

> Use this export to hide/show the laptop UI. This is useful when you want to open an external menu through an App and then return to the laptop. If the export is used to hide the laptop but is not called again to show it, the user will be unable to use the item, as the script will still detect the laptop as open even though it is visually hidden.
>
> {% code title="" %}
>
> ```lua
> exports['av_laptop']:toggle()
> ```
>
> {% endcode %}
> {% endtab %}

{% tab title="Server" %}

### isReady()

> Returns true if av\_laptop is loaded and ready to be used.
>
> **returns:**
>
> * boolean
>
> ```lua
> CreateThread(function()
>     while not exports['av_laptop']:isReady() do Wait(500) end
>     print("av_laptop is ready")
> end
> ```

### getSerial(playerId)

> Retrieve current laptop identifier or false if the player isn't using a laptop.
>
> **parameters:**
>
> * **playerId**:`string` Player server id
>
> **returns:**
>
> * **result**: `string|false` Laptop serial OR false if not using a laptop.
>
> ```lua
> local serial = exports['av_laptop']:getSerial(playerId)
> print(serial) -- string | false
> ```

#### hasDevice(serial,item)

> Verify if the item(s) are inside the laptop container.
>
> **params:**
>
> * **serial**:`string` Laptop serial where to look for item(s)
> * **item**:`string|table` Item name or a table with names
>
> r**eturns**
>
> * **result**:`boolean` True if the item(s) are inside laptop container
>
> ```lua
> local serial = exports['av_laptop']:getSerial(source)
> local item = "water"
> local items = {"water","pendrive", "vpn"}
> local result1 = exports['av_laptop']:hasDevice(serial, item)
> print(result1) -- example using 1 item
> local multiple = exports['av_laptop']:hasDevice(serial,items)
> print(multiple) -- example using a table with multiple item names
> ```

{% endtab %}
{% endtabs %}

.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.av-scripts.com/laptop-pack-v3/laptop-v3/exports.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
