# Exports

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

### getCrew()

> Retrieve the player crew or return false if not an active member.
>
> ```lua
> local myCrew = exports['av_racing']:getCrew()
> if myCrew then -- returns a table {name:string, label:string and isBoss:boolean}
>     print("Crew Name: "..myCrew['name'])
>     print("Crew Label: "..myCrew['label'])
>     print("Crew Label: ", myCrew['isBoss'])
> else
>     print("Not a crew member")
> end
> ```

### inRace()

> Returns false if player is not in a race or a table with the following data:
>
> * **started**:`boolean` Race is in progress
> * **raceId**:`string` Race ID
> * **isPassenger**:`boolean` false means player is driver, true is passenger.

### quitRace()

> Removes the player from a race, returns true if player was actually in a race and was successfully removed.
> {% endtab %}

{% tab title="Server" %}

### registerCrew(source,crewName,boss)

> Use this export to register a new crew from an external script.
>
> **params:**
>
> * **source** `number`: Player server id triggering the export.
> * **creaName** `string`: Name of the racing crew.
> * **boss** `number`: Player server Id who's gonna be assigned as crew leader.
>
> ```lua
> local src = 1
> local crewName = "Los Vagos Racing"
> local boss = 2
> exports['av_racing']:registerCrew(src,crewName,boss)
> ```

### getCrew(playerId)

> Retrieve a player crew or false if player is not an active member.
>
> ```lua
> local myCrew = exports['av_racing']:getCrew(source)
> if myCrew then -- returns a table {name:string, label:string and isBoss:boolean}
>     print("Crew Name: "..myCrew['name'])
>     print("Crew Label: "..myCrew['label'])
>     print("Crew Label: ", myCrew['isBoss'])
> else
>     print("Not a crew member")
> end
> ```

### generateRace(eventData)

> Generate a new Event from an external resource.
>
> **params:**
>
> * **track**:`string` Track identifier/name.
> * **title?:**`string` Event title.
> * **moneyAccount?:**`string` Money account to use or false if is gonna be free.
> * **startsin**:`number` = Time to start (in minutes)
> * **buyin?:**`number` = Buy in or false to make it free
> * **laps?:**`number` = Amount of laps, false or 0 will be drag
> * **class?:**`string` = Vehicle class, if not specified then will be set to "all"
> * **description?:**`string` = Event description
> * **password?:**`string` = Event password or false
> * **type?:**`string` = Event type ("drag", "circuit", "bikes"), default "circuit"
> * **accountLabel?:**`string` = Money account label to show, if missing it will use moneyAccount value
> * **phasing?:**`string` = Phasing value or false to not use phasing at all
> * **isRanked?:**`boolean` = Event will affect player elo
> * **isCrew?:**`boolean`= Lock the event to only crew members
> * **hostName?:**`string` = Specify a host name, default is "SYSTEM"
> * **reversed?:**`boolean` = Reverse checkpoints
> * **moneypot?:**`number` = Starting money pot
>
> **returns:**
>
> * **generated**:`boolean`
>
> ```lua
> local raceData = {
>     track = "legion_square_circuit",   -- Track identifier or name
>     title = "Midnight Madness",        -- (Optional) Event name
>     description = "S Class only. High stakes.", -- (Optional) Event description
>     startsin = 5,                      -- Time to start (in minutes)
>     laps = 3,                          -- Amount of laps (0 or false = drag/sprint)
>     type = "circuit",                  -- "drag", "circuit", "bikes" (Default: "circuit")
>     reversed = false,                  -- Run the track backwards (Finish -> Start)
>     class = "s",                       -- Vehicle class ("s", "a", "b"... or "all")
>     phasing = "full",                  -- Phasing type or false (no phasing)
>     isRanked = true,                   -- If true, race affects Elo rating
>     isCrew = false,                    -- If true, restricts to Crew members only
>     moneyAccount = "cosmo",             -- Account to deduct money from
>     accountLabel = "Cosmo",     -- (Optional) Label shown in UI
>     buyin = 1000,                      -- Entry fee (number) or false for free
>     moneypot = 5000,                   -- (Optional) Starting money added to the pot
>     password = "123",                  -- String for password or false for public
>     hostName = "Server Event",         -- (Optional) Custom host name (Default: "SYSTEM")
> }
> local generated = exports['av_racing']:generateRace(raceData)
> print(generated)
> ```

#### addXP(playerId,amount)

> This export allows you to add extra XP to racer.
>
> **params:**
>
> * **playerId**:`number` Player server ID
> * **amount**:`number` Amount to add
>
> **returns:**
>
> * **success**:`boolean`

#### removeXP(playerId,amount)

> Remove XP from racer.
>
> **params:**
>
> * **playerId**:`number` Player server ID
> * **amount**:`number` Amount to remove
>
> **returns:**
>
> * **success**:`boolean`&#x20;

#### getRedeemed(playerId,identifier?)

> Checks if a player has already redeemed a specific reward.\
> If the `identifier` argument is omitted, it returns the entire list of redeemed items for that player.
>
> **params:**
>
> * **playerId:**`number` Player server ID
> * **identifier?**:`string` Prize identifier, should match one from `server/editable/_progression.lua`&#x20;
>
> **returns:**
>
> * **result:** `boolean|table`
>
> ```lua
> local playerId = 1
> local prizeIdentifier = "Level1"
> -- we are sending the prize identifier, we will receive true/false:
> local result = exports['av_racing']:getRedeemed(playerId, prizeIdentifier)
> print(result) -- true/false
>
> -- This prints a list of strings containing all redeemed prizes by the player:
> local result2 = exports['av_racing']:getRedeemed(playerId)
> print(result2 and json.encode(result2))
> ```

{% endtab %}
{% endtabs %}


---

# 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.av-scripts.com/laptop-pack-v3/racing/exports.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.
