> For the complete documentation index, see [llms.txt](https://docs.menanak47.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.menanak47.com/multi-framework/ak47_vehiclekeys/exports/server.md).

# Server

This page documents all server-side exports available in AK47 Vehicle Keys.

### `GiveKey`

Gives a vehicle key (physical item) to a player on the server.

```lua
exports['ak47_vehiclekeys']:GiveKey(source, plate, temp, target)
```

#### Parameters

* **`source`** (`number`): The server ID (source) of the player giving/receiving the key.
* **`plate`** (`string`): The vehicle license plate.
* **`temp`** (`boolean` | optional): Whether the key is temporary.
* **`target`** (`number` | optional): If specified, the key is given directly to this target player server ID.

#### Example

```lua
local src = source
local plate = 'ABC 123'
-- Give key to player
exports['ak47_vehiclekeys']:GiveKey(src, plate)
```

***

### `RemoveKey`

Removes a vehicle key from a player's inventory on the server.

```lua
exports['ak47_vehiclekeys']:RemoveKey(source, plate, temp)
```

#### Parameters

* **`source`** (`number`): The server ID (source) of the player.
* **`plate`** (`string`): The vehicle license plate.
* **`temp`** (`boolean` | optional): Whether the key being removed is temporary.

#### Example

```lua
local src = source
local plate = 'ABC 123'
exports['ak47_vehiclekeys']:RemoveKey(src, plate)
```

***

### `HasKey`

Checks whether a player on the server holds the key (physical or virtual) for a given vehicle plate.

```lua
local hasKey = exports['ak47_vehiclekeys']:HasKey(source, plate)
```

#### Parameters

* **`source`** (`number`): The server ID of the player.
* **`plate`** (`string`): The vehicle license plate to check.

#### Returns

* **`boolean`**: Returns `true` if the player has the key, `false` otherwise.

#### Example

```lua
RegisterNetEvent('my_garage:storeVehicle', function(plate)
    local src = source
    if exports['ak47_vehiclekeys']:HasKey(src, plate) then
        print('Player has key, storing vehicle...')
    else
        print('Player does not own keys to this vehicle.')
    end
end)
```

***

### `GiveVirtualKey`

Gives a virtual (keyless) key to a player on the server.

```lua
exports['ak47_vehiclekeys']:GiveVirtualKey(source, plate)
```

#### Parameters

* **`source`** (`number`): The server ID of the player.
* **`plate`** (`string`): The vehicle license plate.

#### Example

```lua
local src = source
local rentalPlate = 'RENTAL01'
-- Give player virtual rental key
exports['ak47_vehiclekeys']:GiveVirtualKey(src, rentalPlate)
```

***

### `RemoveVirtualKey`

Removes a virtual key from a player on the server.

```lua
exports['ak47_vehiclekeys']:RemoveVirtualKey(source, plate)
```

#### Parameters

* **`source`** (`number`): The server ID of the player.
* **`plate`** (`string`): The vehicle license plate.

#### Example

```lua
local src = source
local rentalPlate = 'RENTAL01'
exports['ak47_vehiclekeys']:RemoveVirtualKey(src, rentalPlate)
```

***

### `TransferVirtualKey`

Transfers ownership of a virtual key from one player to another.

```lua
exports['ak47_vehiclekeys']:TransferVirtualKey(source, plate, target)
```

#### Parameters

* **`source`** (`number`): The server ID of the sending player.
* **`plate`** (`string`): The vehicle license plate.
* **`target`** (`number`): The server ID of the receiving player.

#### Example

```lua
local senderId = 1
local receiverId = 2
local plate = 'ABC 123'
exports['ak47_vehiclekeys']:TransferVirtualKey(senderId, plate, receiverId)
```
