# Server-Side Exports

Todos os exports abaixo são executados **exclusivamente no lado server**.

***

## Bypass de Proteções

Ativa ou desativa o bypass de uma proteção específica para um jogador.

```lua
-- Ativar bypass
exports["eqpg-pro"]:BypassProtect(source, "tipo", true)

-- Desativar bypass
exports["eqpg-pro"]:BypassProtect(source, "tipo", false)
```

**Parâmetros:**

| Parâmetro    | Tipo      | Descrição                                         |
| ------------ | --------- | ------------------------------------------------- |
| `source`     | `integer` | ID do jogador                                     |
| `tipo`       | `string`  | Tipo da proteção (ex: `"[noclip-1]"`)             |
| `true/false` | `boolean` | `true` para ativar bypass, `false` para desativar |

**Tipos de bypass disponíveis:**

| Tipo           | Descrição                      |
| -------------- | ------------------------------ |
| `"[noclip-1]"` | Bypass da proteção anti-noclip |

**Exemplo:**

```lua
-- Desativar anti-noclip para o jogador (ex: modo admin)
exports["eqpg-pro"]:BypassProtect(source, "[noclip-1]", true)

```

***

## Spawnar Armas (Tipo 1)

Spawna armas para um jogador. Este é o método recomendado.

```lua
exports["eqpg-pro"]:giveWeapons(source, {
    [modelHash] = {
        ammo = ammoCount,
        isHidden = false,
        bForceInHand = false
    }
})
```

**Parâmetros:**

| Parâmetro      | Tipo          | Descrição                                  |
| -------------- | ------------- | ------------------------------------------ |
| `source`       | `integer`     | ID do jogador                              |
| `modelHash`    | `string/hash` | Model ou hash da arma                      |
| `ammo`         | `integer`     | Quantidade de munição (0 para sem munição) |
| `isHidden`     | `boolean`     | `true` para esconder da roda de armas      |
| `bForceInHand` | `boolean`     | `true` para equipar diretamente na mão     |

**Exemplo:**

```lua
-- Dar uma pistola com 100 de munição, visível na roda e equipada na mão
exports["eqpg-pro"]:giveWeapons(source, {
    ["WEAPON_PISTOL"] = {
        ammo = 100,
        isHidden = false,
        bForceInHand = true
    }
})

-- Dar múltiplas armas de uma vez
exports["eqpg-pro"]:giveWeapons(source, {
    ["WEAPON_PISTOL"] = { ammo = 100, isHidden = false, bForceInHand = false },
    ["WEAPON_SMG"] = { ammo = 200, isHidden = false, bForceInHand = false }
})
```

***

## Spawnar Armas (Tipo 2)

Replace da native `GiveWeaponToPed`. Use este método como substituto direto da native.

```lua
exports["eqpg-pro"]:EQPGWeapon(GetPlayerPed(source), modelHash, ammoCount, isHidden, bForceInHand)
```

**Parâmetros:**

| Parâmetro              | Tipo          | Descrição                                  |
| ---------------------- | ------------- | ------------------------------------------ |
| `GetPlayerPed(source)` | `integer`     | Ped do jogador (via native)                |
| `modelHash`            | `string/hash` | Model ou hash da arma                      |
| `ammoCount`            | `integer`     | Quantidade de munição (0 para sem munição) |
| `isHidden`             | `boolean`     | `true` para esconder da roda de armas      |
| `bForceInHand`         | `boolean`     | `true` para equipar diretamente na mão     |

**Exemplo:**

```lua
-- Substituição direta de GiveWeaponToPed
exports["eqpg-pro"]:EQPGWeapon(GetPlayerPed(source), "WEAPON_PISTOL", 100, false, true)
```

***

## Spawnar Veículos

Spawna um veículo para um jogador de forma segura pelo server-side.

```lua
exports["eqpg-pro"]:setSpawnClient(source, mvehicle)
```

**Parâmetros:**

| Parâmetro  | Tipo          | Descrição                |
| ---------- | ------------- | ------------------------ |
| `source`   | `integer`     | ID do jogador            |
| `mvehicle` | `string/hash` | Model ou hash do veículo |

**Exemplo:**

```lua
exports["eqpg-pro"]:setSpawnClient(source, "adder")
```

***

## Registrar Mudança de Ped

Registra uma mudança de modelo de ped para um jogador, evitando que a proteção anti-mudança de ped gere um falso positivo. Use este export **antes** de alterar o modelo do jogador via script.

```lua
exports["eqpg-pro"]:EQPGPed(source, modelHash)
```

**Parâmetros:**

| Parâmetro   | Tipo          | Descrição                              |
| ----------- | ------------- | -------------------------------------- |
| `source`    | `integer`     | ID do jogador                          |
| `modelHash` | `string/hash` | Model ou hash do ped que será aplicado |

**Exemplo:**

```lua
-- Registrar mudança de ped antes de aplicar o novo modelo
exports["eqpg-pro"]:EQPGPed(source, "mp_m_freemode_01")

-- Agora pode trocar o ped normalmente sem gerar falso positivo
SetPlayerModel(source, "mp_m_freemode_01")
```

{% hint style="warning" %}
Sempre chame `EQPGPed` **antes** de efetuar a troca de modelo. Caso contrário, a proteção anti-mudança de ped poderá detectar a alteração como irregularidade e punir o jogador.
{% endhint %}

***

## Remover Armas

Remove todas as armas de um jogador.

```lua
-- Remove todas as armas
exports["eqpg-pro"]:removeWeapons(source)

-- Remove armas do personagem
exports["eqpg-pro"]:removeCharacterWeapons(source)
```

**Parâmetros:**

| Parâmetro | Tipo      | Descrição     |
| --------- | --------- | ------------- |
| `source`  | `integer` | ID do jogador |

{% hint style="info" %}
Use `removeWeapons` para remover temporariamente e `removeCharacterWeapons` para remover permanentemente do personagem.
{% endhint %}

***

## Marcar Jogador como Suspeito

Registra um jogador como suspeito no sistema do EQPG-Pro com um motivo específico.

```lua
exports["eqpg-pro"]:SuspeitoEQPG("[motivo]", source)
```

**Parâmetros:**

| Parâmetro | Tipo      | Descrição                                          |
| --------- | --------- | -------------------------------------------------- |
| `motivo`  | `string`  | Motivo pelo qual o jogador é marcado como suspeito |
| `source`  | `integer` | ID do jogador                                      |

**Exemplo:**

```lua
-- Marcar jogador como suspeito por velocidade anormal
exports["eqpg-pro"]:SuspeitoEQPG("[speed-hack detectado]", source)
```

***

## Banir Jogador

Bane um jogador diretamente via EQPG-Pro com um motivo especificado.

```lua
exports["eqpg-pro"]:BanEQPG("[motivo]", source)
```

**Parâmetros:**

| Parâmetro | Tipo      | Descrição           |
| --------- | --------- | ------------------- |
| `motivo`  | `string`  | Motivo do banimento |
| `source`  | `integer` | ID do jogador       |

**Exemplo:**

```lua
-- Banir jogador por uso de cheat confirmado
exports["eqpg-pro"]:BanEQPG("[cheat confirmado pelo sistema]", source)
```

**Exemplo combinado (suspeito → ban):**

```lua
-- Registrar como suspeito primeiro, depois banir se confirmado
exports["eqpg-pro"]:SuspeitoEQPG("[comportamento anômalo]", source)

-- Após confirmação manual ou automática:
exports["eqpg-pro"]:BanEQPG("[cheat confirmado]", source)
```

{% hint style="warning" %}
Use `BanEQPG` com cautela. Prefira `SuspeitoEQPG` para flags automáticas e reserve `BanEQPG` para banimentos confirmados.
{% endhint %}

***

## Liberar Spawn de Objeto (Anti-Spawn Reforçado)

Autoriza a criação de um objeto específico para um jogador, evitando que o **Anti-Spawn Reforçado de Objetos** bloqueie a entidade. Deve ser chamado **antes** de o cliente criar o objeto.

```lua
exports["eqpg-pro"]:CreateObjectSecure(source, modelHash)
```

**Parâmetros:**

| Parâmetro   | Tipo          | Descrição                                |
| ----------- | ------------- | ---------------------------------------- |
| `source`    | `integer`     | ID do jogador                            |
| `modelHash` | `string/hash` | Model ou hash do objeto a ser autorizado |

**Exemplo:**

```lua
-- No server-side do seu resource, registre o hash ANTES de acionar o cliente
local modelHash = GetHashKey("prop_chair_01a")

exports["eqpg-pro"]:CreateObjectSecure(source, modelHash)

-- Depois acione o cliente para criar o objeto normalmente
TriggerClientEvent("resource:criarObjeto", source, modelHash)
```

{% hint style="info" %}
Este export só tem efeito quando `EQPG.SpawnObjectReforced` está ativado na configuração do EQPG-Pro. Todos os objetos criados pelo jogador são rastreados e removidos automaticamente quando ele sai do servidor.
{% endhint %}

{% hint style="warning" %}
Sempre chame `CreateObjectSecure` **antes** de o cliente executar a criação do objeto. Objetos criados sem autorização prévia serão cancelados pelo sistema.
{% endhint %}

***

## Liberar Spawn de Ped (Anti-Spawn Reforçado)

Autoriza a criação de um ped específico para um jogador, evitando que o **Anti-Spawn Reforçado de Peds** bloqueie a entidade. Deve ser chamado **antes** de o cliente criar o ped.

```lua
exports["eqpg-pro"]:CreatePedSecure(source, modelHash)
```

**Parâmetros:**

| Parâmetro   | Tipo          | Descrição                             |
| ----------- | ------------- | ------------------------------------- |
| `source`    | `integer`     | ID do jogador                         |
| `modelHash` | `string/hash` | Model ou hash do ped a ser autorizado |

**Exemplo:**

```lua
-- No server-side do seu resource, registre o hash ANTES de acionar o cliente
local modelHash = GetHashKey("a_m_m_beach_01")

exports["eqpg-pro"]:CreatePedSecure(source, modelHash)

-- Depois acione o cliente para criar o ped normalmente
TriggerClientEvent("resource:criarPed", source, modelHash)
```

{% hint style="info" %}
Este export só tem efeito quando `EQPG.SpawnPedReforced` está ativado na configuração do EQPG-Pro. Todos os peds criados pelo jogador são rastreados e removidos automaticamente quando ele sai do servidor.
{% endhint %}

{% hint style="warning" %}
Sempre chame `CreatePedSecure` **antes** de o cliente executar a criação do ped. Peds criados sem autorização prévia serão cancelados pelo sistema.
{% endhint %}


---

# 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://eqpg-network.gitbook.io/eqpg-docs/exports/server-side.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.
