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

# Configurando Permissões e Pagamentos

# Configurando Permissões e Pagamentos no Lapdance

Neste guia, você aprenderá a configurar as funções relacionadas a permissões de criação de blips e transações financeiras no script Lapdance.

<Note>
  📁 dk\_lapdance > config > server > functions.lua
</Note>

## Verificando permissões de criação de blips

### Função `Config.blipCreatePermission`

Essa função verifica se o player possui permissão para criar ou remover blips.

**Como funciona:**

* Utiliza a função `FW.isAdmin(source)` do framework do player, caso ele seja identificado pelo `dk_snippets`.
* Caso o framework não seja detectado, verifica diretamente através do **FiveM Ace Permissions** usando `IsPlayerAceAllowed(source, "admin")`.

**Código:**

```lua theme={null}
function Config.blipCreatePermission(source) 
    return FW.isAdmin(source)
end
```

**Customização:**
Se necessário, adapte o comportamento para utilizar permissões específicas ou outro método de validação de administradores.

## Efetuando pagamento de gorjetas

### Função `Config.tipPayment`

Essa função processa o pagamento de gorjetas pelo player.

**Como funciona:**

1. Obtém o `user_id` do player usando `FW.userId(source)`.
2. Deduz o valor da gorjeta do banco do player com `FW.paymentBank(user_id, amount)`.
3. Caso o player não tenha saldo suficiente, uma mensagem de erro é enviada.
4. Se o pagamento for bem-sucedido, uma mensagem de sucesso é exibida.

**Código:**

```lua theme={null}
function Config.tipPayment(source, amount)
    local user_id = FW.userId(source)
    if not FW.paymentBank(user_id, amount) then
        DkNotify(source, "red", "Impossível efetuar o pagamento da gorjeta. Dinheiro insuficiente.")
        return false
    end
    DkNotify(source, "green", "Gorjeta enviada com sucesso.")
    return true
end
```

**Mensagem ao jogador:**

* **Erro:** "Impossível efetuar o pagamento da gorjeta. Dinheiro insuficiente."
* **Sucesso:** "Gorjeta enviada com sucesso."

## Distribuindo gorjetas aos dançarinos

### Função `Config.giveTip`

Essa função distribui o valor total da gorjeta entre os dançarinos.

**Como funciona:**

1. Calcula o valor individual da gorjeta dividindo o total pela quantidade de dançarinos.
2. Adiciona o valor ao banco do player usando `FW.giveBank(user_id, amount)`.
3. Envia uma notificação de sucesso ao player informando o valor recebido.

**Código:**

```lua theme={null}
function Config.giveTip(dancers, total)
    local amount = ParseInt(total / #dancers)
    table.forEach(dancers, function(datas)
        CreateThread(function()
            local user_id = FW.userId(datas.source)
            FW.giveBank(user_id, amount)
            DkNotify(datas.source, "green", "Você recebeu uma gorjeta de <strong>$"..amount..".0</strong> pela dança.", 10000)
        end)
    end)
end
```

**Mensagem ao jogador:**

* "Você recebeu uma gorjeta de **\$X.0** pela dança."

**Nota:**
O valor é dividido igualmente entre os dançarinos para evitar inconsistências e possíveis duplicações.

## Dicas Úteis

<Tip>
  * As funções `FW.isAdmin`, `FW.userId`, `FW.paymentBank` e `FW.giveBank` são dependências do framework detectado pelo `dk_snippets`. Certifique-se de que seu framework é compatível ou adapte essas funções conforme necessário.
  * A função [Config.blipCreatePermission](./functions#funcao-config-blipcreatepermission) é verificada em todas as alterações de blips para evitar dumps, caso queira remover a necessidade de permissões altere para `return true`.
</Tip>
