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

# Exports

> Integre nosso produto com outros scripts de seu servidor, deixando tudo muito mais legal e com sua cara.

## Client-side

### getNearestProperty

Retorna a propriedade mais próxima do jogador dentro do raio, caso exista.

**Parâmetros:**

* radius: `number`

**Retorna:**

* label: `string?`
* data: `table?`
  * É o equivalente à `propertyList[label]`

**Exemplo de uso:**

```lua theme={null}
local label, data = exports.heyy_houses:getNearestProperty(15.0)
```

## Server-side

### getNearestProperty

Retorna a propriedade mais próxima do jogador dentro do raio, caso exista.

**Parâmetros:**

* coords: `vector3`
* radius: `number?`

**Retorna:**

* data: `table`
  * label: `string`
  * distance: `number`

**Exemplo de uso:**

```lua theme={null}
local ped = GetPlayerPed(source)
local coords = GetEntityCoords(ped)
local data = exports.heyy_houses:getNearestProperty(coords)
```

### registerProperty

Registra uma propriedade para um jogador

**Parâmetros:**

* user\_id: `integer`
* label: `string`
* interior: `string?`
* interiorColor: `string?`

**Retorna:**

* data: `table`
  * success: `boolean`
  * errorMessage: `string?`
    * A mensagem de erro caso `success` seja igual à `false`

**Exemplo de uso:**

```lua theme={null}
local data = exports.heyy_houses:registerProperty(user_id, "Eclipse Tower")
```

### removeProperty

Remove uma propriedade pelo ID, caso exista.

**Parâmetros:**

* property\_id: `integer`

**Exemplo de uso:**

```lua theme={null}
-- Assumindo que o ID da propriedade desejada seja 136
exports.heyy_houses:removeProperty(136)
```

### getUserPropertyPermissions

Retorna as permissões do jogador em uma propriedade específica

**Parâmetros:**

* property\_id: `integer`
* user\_id: `integer`

**Retorna:**

* permissions: `table`
  * \[key: `string`]: `boolean`

**Exemplo de uso:**

```lua theme={null}
-- Assumindo que o ID da propriedade desejada seja 136
local permissions = exports.heyy_houses:getUserPropertyPermissions(136, user_id)
```

### isPropertyStealable

Retorna se a propriedade especificada tem coordenadas de roubo válidas e pode ser roubada.

**Parâmetros:**

* label: `string`

**Retorna:**

* canSteal: `boolean`

**Exemplo de uso:**

```lua theme={null}
if exports.heyy_houses:isPropertyStealable("Eclipse Tower") then
  -- algo acontece se puder roubar
end
```

### tryStealProperty

Realiza uma tentativa de roubo à propriedade mais próxima. Se for possível de ser roubada, o jogador será instantâneamente teleportado para dentro da propriedade.

**Parâmetros:**

* source: `string`

**Retorna:**

* success: `boolean`

**Exemplo de uso:**

```lua theme={null}
exports.heyy_houses:tryStealProperty(source)
```

### canInvadeProperty

Verifica se uma propriedade pode ser invadida.

As condições para uma propriedade ser invadida são algumas e apenas uma delas precisa ser verdadeira:

* A propriedade está sendo roubada
* A propriedade possui dono

Além dessas condições a função `Functions.canInvadeProperty` definida no `functions.lua` precisa retornar verdadeiro. É nessa função que você pode determinar condições adicionais (por exemplo, verificar se o jogador é um policial ou verificar algo sobre a propriedade). Se essa função não existir, ela é assumida como verdadeira.

Caso não seja possível invadir por alguma das condições explicadas acima, é retornado uma mensagem de erro.

**Parâmetros:**

* user\_id: `integer`
* label: `string`

**Retorna:**

* canInvade: `boolean`
* errorMessage: `string?`

**Exemplo de uso:**

```lua theme={null}
local canInvade = exports.heyy_houses:canInvadeProperty(user_id, label)
```

### invadeProperty

Realiza uma tentativa de invadir a propriedade especificada.

É executado `canInvadeProperty` antes de realmente realizar a invasão, mas é recomendado que você utilize `canInvadeProperty` no seu próprio código.

**Parâmetros:**

* user\_id: `integer`
* label: `string`
* propertyId: `number?`
  * Esse parâmetro específico é opcional, ele permite que você especifique o ID da casa que deve ser invadida. Isso é util em propriedades como apartamentos, em que há vários no mesmo blip. Caso não especificado, o jogador poderá escolher qual invadir.

**Retorna:**

* success: `boolean`
* errorMessage: `string?`

**Exemplo de uso:**

```lua theme={null}
local success, errorMessage = exports.heyy_houses:invadeProperty(user_id, label)
```
