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

# Exports e Eventos

> API para integração com outros recursos

## Exports (Server-Side)

### OpenShop

Abre a loja de skins para um jogador específico.

```lua theme={null}
exports['rkt_skins']:OpenShop(playerId)
```

<ParamField path="playerId" type="number" required>
  ID do jogador (source)
</ParamField>

**Exemplo:**

```lua theme={null}
-- Abrir loja para o jogador de ID 1
exports['rkt_skins']:OpenShop(1)

-- Abrir via comando custom
RegisterCommand('abrirlojadeskins', function(source)
    exports['rkt_skins']:OpenShop(source)
end)
```

***

## Eventos (Server-Side)

### rkt\_skinshop:requestOpen

Solicita abertura da loja para o jogador que disparou o evento.

```lua theme={null}
TriggerEvent('rkt_skinshop:requestOpen')
```

### rkt\_skinshop:openShop

Alias para `requestOpen`.

```lua theme={null}
TriggerServerEvent('rkt_skinshop:openShop')
```

***

## Eventos (Client-Side)

### rkt\_skinshop:addNotification

Adiciona uma notificação na UI.

```lua theme={null}
TriggerClientEvent('rkt_skinshop:addNotification', playerId, {
    type = 'success',    -- 'success', 'error', 'info', 'warning'
    title = 'Título',
    message = 'Mensagem',
    timestamp = os.time() * 1000
})
```

<ParamField path="type" type="string" required>
  Tipo da notificação: `success`, `error`, `info`, `warning`
</ParamField>

<ParamField path="title" type="string" required>
  Título da notificação
</ParamField>

<ParamField path="message" type="string" required>
  Mensagem da notificação
</ParamField>

***

## Bridge Functions

O sistema Bridge permite integração fácil com diferentes frameworks.

### Server-Side

```lua theme={null}
-- Obter identificador do jogador
local citizenid = Bridge.GetPlayerIdentifier(source)

-- Obter nome do jogador
local name = Bridge.GetPlayerName(source)

-- Verificar se é admin
local isAdmin = Bridge.IsPlayerAdmin(source)

-- Obter dinheiro
local cash = Bridge.GetPlayerMoney(source, 'cash')
local bank = Bridge.GetPlayerMoney(source, 'bank')
local coins = Bridge.GetPlayerMoney(source, 'coins')

-- Remover dinheiro
local success = Bridge.RemovePlayerMoney(source, 'cash', 1000)

-- Adicionar dinheiro
local success = Bridge.AddPlayerMoney(source, 'cash', 1000)

-- Enviar notificação
Bridge.Notify(source, 'Mensagem', 'success')
```

### Client-Side

```lua theme={null}
-- Obter dados do jogador
local playerData = BridgeClient.GetPlayerData()

-- Verificar se está logado
local isLoaded = BridgeClient.IsPlayerLoaded()

-- Enviar notificação
BridgeClient.Notify('Mensagem', 'success')

-- Obter arma atual
local weaponHash = BridgeClient.GetCurrentWeapon()

-- Verificar se possui arma
local hasWeapon = BridgeClient.HasWeapon(weaponHash)

-- Aplicar componente
BridgeClient.GiveWeaponComponent(weaponHash, componentHash)

-- Remover componente
BridgeClient.RemoveWeaponComponent(weaponHash, componentHash)
```

***

## Exemplos de Integração

### Abrir loja por comando

```lua theme={null}
RegisterCommand('skins', function(source)
    exports['rkt_skins']:OpenShop(source)
end, false)
```

### Abrir loja por target/interação

```lua theme={null}
-- ox_target
exports.ox_target:addGlobalPed({
    {
        name = 'skin_vendor',
        icon = 'fas fa-paint-brush',
        label = 'Loja de Skins',
        onSelect = function()
            TriggerServerEvent('rkt_skinshop:openShop')
        end
    }
})
```

### Notificação customizada

```lua theme={null}
-- Server-side
TriggerClientEvent('rkt_skinshop:addNotification', source, {
    type = 'success',
    title = 'Skin Equipada!',
    message = 'Você equipou a skin Dragon Lore',
    timestamp = os.time() * 1000
})
```
