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

# Funções do Servidor (vRP)

> Referência das funções reais da interface vRP (Proxy, lado servidor), agrupadas por área, extraídas de resources/vrp/modules/*.lua.

Referência das funções reais registradas na interface `vRP` (Proxy, lado servidor), agrupadas por área. Todas extraídas de `resources/vrp/modules/*.lua`. Obtenha a interface com:

```lua theme={null}
local Proxy = module("vrp","lib/Proxy")
vRP = Proxy.getInterface("vRP")
```

<Note>
  **Convenção:** `Passport` é o id do personagem (não o `source`). `source` é o id de rede do player.
</Note>

***

## Referência por área

<AccordionGroup>
  <Accordion title="Identidade / Personagem" icon="id-card">
    | Função                                             | Descrição                                                |
    | -------------------------------------------------- | -------------------------------------------------------- |
    | `vRP.Identity(Passport)`                           | Row do personagem (cache ou banco).                      |
    | `vRP.FullName(Passport)`                           | `"Nome Sobrenome"` do personagem.                        |
    | `vRP.LowerName(Passport)`                          | Apenas o primeiro nome.                                  |
    | `vRP.License(Passport)`                            | A license do personagem, ou `0`.                         |
    | `vRP.Passport(source)`                             | Passport a partir do `source`, ou `false`.               |
    | `vRP.Source(Passport)`                             | `source` a partir do Passport, ou `false`.               |
    | `vRP.Players()`                                    | Tabela `[Passport] = source` de todos os players online. |
    | `vRP.Identities(source)`                           | Identificador do player (ex.: steam).                    |
    | `vRP.Phone(Passport)`                              | Número de telefone (gera e persiste se não existir).     |
    | `vRP.InsertPrison(Passport,Amount)`                | Adiciona tempo/serviços de prisão.                       |
    | `vRP.UpdatePrison(Passport,Amount)`                | Reduz serviços de prisão; solta ao zerar.                |
    | `vRP.UpgradeNames(Passport,Name,Lastname)`         | Atualiza nome/sobrenome.                                 |
    | `vRP.SkinCharacter(Passport,Hash)`                 | Salva o model/skin do personagem.                        |
    | `vRP.UserGemstone(License)`                        | Quantidade de diamantes (Gemstone).                      |
    | `vRP.UpgradeGemstone(Passport,Amount,SendLicense)` | Credita diamantes.                                       |
    | `vRP.PassportPlate(Plate)`                         | Passport dono de uma placa, ou `false`.                  |
    | `vRP.GeneratePlate()`                              | Gera uma placa única.                                    |
    | `vRP.GenerateToken()`                              | Gera um token único de 7 dígitos.                        |
    | `vRP.CharacterChosen(source,Passport,Model)`       | Carrega o personagem escolhido para a sessão.            |
    | `vRP.Kick(source,Reason)`                          | Desconecta e dá `DropPlayer`.                            |

    <Note>
      Export relacionado: `exports.vrp:Avatar(Passport [,Permission])`: imagem do avatar.
    </Note>
  </Accordion>

  <Accordion title="Conta / Dados persistentes" icon="floppy-disk">
    | Função                                     | Descrição                                       |
    | ------------------------------------------ | ----------------------------------------------- |
    | `vRP.Account(License)`                     | Row da conta pela license.                      |
    | `vRP.Discord(Discord)`                     | Row da conta pelo Discord id.                   |
    | `vRP.AccountInformation(Passport,Mode)`    | Valor de uma coluna da conta.                   |
    | `vRP.UserData(Passport,Key)`               | Decodifica `playerdata[Key]` como JSON.         |
    | `vRP.setUData(user_id,key,value)`          | Grava `playerdata[key] = value`.                |
    | `vRP.Datatable(Passport)`                  | Retorna o `Datatable` do personagem.            |
    | `vRP.UpdateDatatable(Passport,Mode,Value)` | Define um campo do Datatable.                   |
    | `vRP.Archive(Archive,Text)`                | Anexa texto a um arquivo (resource `archives`). |
    | `vRP.SaveTemporary(Passport,source,Table)` | Salva estado e prepara para arena.              |
    | `vRP.ApplyTemporary(Passport,source)`      | Restaura o estado salvo.                        |
  </Accordion>

  <Accordion title="Banco de dados" icon="database">
    | Função                         | Descrição                                      |
    | ------------------------------ | ---------------------------------------------- |
    | `vRP.Prepare(Name,Query)`      | Registra um prepared statement nomeado.        |
    | `vRP.Query(Name,Params)`       | Executa via `oxmysql:query_async`.             |
    | `vRP.Update(Name,Params)`      | Executa via `oxmysql:update_async`.            |
    | `vRP.SingleQuery(Name,Params)` | Executa via `oxmysql:single_async` (uma row).  |
    | `vRP.Scalar(Name,Params)`      | Executa via `oxmysql:scalar_async` (um valor). |
  </Accordion>

  <Accordion title="Dinheiro / Banco" icon="money-bill">
    | Função                                    | Descrição                                             |
    | ----------------------------------------- | ----------------------------------------------------- |
    | `vRP.GiveBank(Passport,Amount,Notify)`    | Credita no banco.                                     |
    | `vRP.RemoveBank(Passport,Amount)`         | Debita do banco (não fica negativo).                  |
    | `vRP.GetBank(Passport)`                   | Saldo bancário atual, ou `0`.                         |
    | `vRP.PaymentBank(Passport,Amount,Notify)` | Tenta debitar do banco; `true` se houve saldo.        |
    | `vRP.PaymentGems(Passport,Amount)`        | Tenta debitar diamantes; `true` se houve saldo.       |
    | `vRP.PaymentFull(Passport,Amount,Notify)` | Paga com item `dollar` e, se faltar, debita do banco. |
    | `vRP.WithdrawCash(Passport,Amount)`       | Saca do banco gerando item `dollar`.                  |
  </Accordion>

  <Accordion title="Inventário / Itens" icon="box">
    | Função                                               | Descrição                                                  |
    | ---------------------------------------------------- | ---------------------------------------------------------- |
    | `vRP.Inventory(Passport)`                            | Tabela do inventário.                                      |
    | `vRP.GiveItem(Passport,Item,Amount,Notify,Slot)`     | Adiciona item.                                             |
    | `vRP.GenerateItem(Passport,Item,Amount,Notify,Slot)` | Como `GiveItem`, com sufixos de itens únicos/duráveis.     |
    | `vRP.TakeItem(Passport,Item,Amount,Notify,Slot)`     | Remove `Amount` do item; `true` se removeu.                |
    | `vRP.RemoveItem(Passport,Item,Amount,Notify)`        | Remove o item por nome exato.                              |
    | `vRP.ConsultItem(Passport,Item,Amount)`              | `{Amount,Item,Slot}` se tiver a quantidade; senão `false`. |
    | `vRP.ItemAmount(Passport,Item)`                      | Soma a quantidade do item no inventário.                   |
    | `vRP.InventoryItemAmount(Passport,Item)`             | `{amount,item,slot}` da primeira ocorrência.               |
    | `vRP.MaxItens(Passport,Item,Amount)`                 | `true` se exceder o máximo permitido do item.              |
    | `vRP.ClearInventory(Passport,Ignore)`                | Limpa o inventário (respeitando itens `BlockDelete`).      |
    | `vRP.InventoryFull(Passport,Item)`                   | `true` se não há mais espaço para o item.                  |
    | `vRP.InventorySlots(Passport)`                       | Quantidade de slots do personagem.                         |
    | `vRP.UpgradeSlots(Passport,Amount)`                  | Aumenta os slots do personagem.                            |
    | `vRP.SwapSlot(Passport,Slot,Target)`                 | Troca dois slots de lugar.                                 |
    | `vRP.CleanSlot(Passport,Slot)`                       | Esvazia um slot.                                           |
    | `vRP.RemoveCharges(Passport,Item)`                   | Consome uma carga de um item.                              |
    | `vRP.CheckDamaged(Item)`                             | `true` se o item está danificado/estragado.                |
    | `vRP.ArrestItens(Passport)`                          | Recolhe os itens ilícitos do personagem (uso policial).    |

    **Peso**

    | Função                                    | Descrição                                |
    | ----------------------------------------- | ---------------------------------------- |
    | `vRP.GetWeight(Passport,Ignore)`          | Peso máximo do player.                   |
    | `vRP.InventoryWeight(Passport)`           | Peso atual ocupado.                      |
    | `vRP.CheckWeight(Passport,Item,Amount)`   | `true` se cabe dentro do peso máximo.    |
    | `vRP.UpgradeWeight(Passport,Amount,Mode)` | Ajusta o peso base (`Mode == "+"` soma). |

    **Baús / Storage (`entitydata`)**

    | Função                                                             | Descrição                                      |
    | ------------------------------------------------------------------ | ---------------------------------------------- |
    | `vRP.GetSrvData(Key,Save)`                                         | Lê/cacheia dados de `entitydata`.              |
    | `vRP.SetSrvData(Key,Data,Save)`                                    | Define os dados de uma chave.                  |
    | `vRP.RemSrvData(Key)`                                              | Remove a chave.                                |
    | `vRP.TakeChest(Passport,Data,Amount,Slot,Target,Save)`             | Retira item de um baú para o inventário.       |
    | `vRP.StoreChest(Passport,Data,Amount,Weight,Slot,Target,Save,Max)` | Guarda item no baú respeitando peso/máximo.    |
    | `vRP.ChestWeight(Data)`                                            | Peso ocupado no baú.                           |
    | `vRP.ItemChestAmount(Data,Item,Save)`                              | Quantidade de um item dentro do baú.           |
    | `vRP.MaxChest(Data,Item,Amount,Save)`                              | `true` se a quantidade excede o limite do baú. |
    | `vRP.UpdateChest(Data,Table,Save)`                                 | Sobrescreve o conteúdo do baú.                 |
    | `vRP.CleanSlotChest(Data,Slot,Save)`                               | Esvazia um slot do baú.                        |
    | `vRP.MountContainer(Data,Save)`                                    | Monta a estrutura de um container/baú.         |

    <Note>
      Export relacionado: `exports.vrp:CallPolice(Table)`: dispara um chamado policial.
    </Note>
  </Accordion>

  <Accordion title="Grupos / Permissões / Serviço" icon="users">
    | Função                                                   | Descrição                                                  |
    | -------------------------------------------------------- | ---------------------------------------------------------- |
    | `vRP.Groups()`                                           | Retorna a tabela de configuração `Groups`.                 |
    | `vRP.HasPermission(Passport,Permission,Level)`           | Nível na permissão; `false` se não tiver.                  |
    | `vRP.HasGroup(Passport,Permission,Level)`                | Como acima, resolvendo grupos "pais".                      |
    | `vRP.HasService(Passport,Permission,Level)`              | `true`/nível se está **em serviço** na permissão.          |
    | `vRP.HasTable(Passport,Table)`                           | Primeira permissão da lista que o passaporte possui.       |
    | `vRP.SetPermission(Passport,Permission,Level,Mode)`      | Define/promove/rebaixa permissão.                          |
    | `vRP.RemovePermission(Passport,Permission)`              | Remove a permissão.                                        |
    | `vRP.ServiceToggle(source,Passport,Permission,Silenced)` | Alterna entrar/sair de serviço.                            |
    | `vRP.UserGroups(Passport)`                               | `{[Permission]=nivel}` de todas as permissões.             |
    | `vRP.UserSalarys(Passport)`                              | Soma dos salários das permissões em serviço.               |
    | `vRP.NameHierarchy(Permission,Level)`                    | Nome do cargo num nível.                                   |
    | `vRP.NumPermission(Permission)`                          | `{[Passport]=source}` de quem está em serviço + contagem.  |
    | `vRP.ServiceEnter(source,Passport,Permission,Silenced)`  | Coloca em serviço.                                         |
    | `vRP.ServiceLeave(source,Passport,Permission,Silenced)`  | Tira de serviço.                                           |
    | `vRP.AmountService(Permission,Level)`                    | Quantos estão em serviço na permissão/nível.               |
    | `vRP.AmountGroups(Permission)`                           | Quantos passaportes têm a permissão.                       |
    | `vRP.NumGroups(Permission)`                              | `{[Passport]=nivel}` de todos os membros do grupo.         |
    | `vRP.DataGroups(Permission)`                             | Configuração bruta do grupo.                               |
    | `vRP.GroupType(Permission)`                              | Campo `Type` do grupo (`"Work"`, `"Fuel"`, `"Propertys"`). |
    | `vRP.GetUserType(Passport,Type)`                         | Primeiro grupo do passaporte com aquele `Type`.            |
    | `vRP.UserDomination(Passport)`                           | Grupo de dominação do passaporte.                          |
    | `vRP.Hierarchy(Permission)`                              | Lista de cargos do grupo.                                  |
    | `vRP.LoopPermission(Passport,Permission)`                | Percorre as permissões filhas de um grupo.                 |
    | `vRP.Playing(Passport,Permission)`                       | Tempo de jogo do passaporte no grupo.                      |
  </Accordion>

  <Accordion title="Drogas e efeitos temporários" icon="pills">
    Todos os timers são em segundos e persistem entre sessões.

    | Função                              | Descrição                             |
    | ----------------------------------- | ------------------------------------- |
    | `vRP.WeedTimer(Passport,Timer)`     | Aplica/soma o efeito de maconha.      |
    | `vRP.WeedReturn(Passport)`          | Tempo restante do efeito de maconha.  |
    | `vRP.AlcoholTimer(Passport,Timer)`  | Aplica/soma o efeito de álcool.       |
    | `vRP.AlcoholReturn(Passport)`       | Tempo restante do efeito de álcool.   |
    | `vRP.ChemicalTimer(Passport,Timer)` | Aplica/soma o efeito de químicos.     |
    | `vRP.ChemicalReturn(Passport)`      | Tempo restante do efeito de químicos. |
  </Accordion>

  <Accordion title="Status do player / Mundo" icon="heart-pulse">
    | Função                                               | Descrição                                    |
    | ---------------------------------------------------- | -------------------------------------------- |
    | `vRP.GetHealth(source)`                              | Vida atual do ped (ou `100`).                |
    | `vRP.SetArmour(source,Amount)`                       | Soma colete ao atual (máx 100).              |
    | `vRP.Armour(source,Amount)`                          | Define o colete diretamente.                 |
    | `vRP.Teleport(source,x,y,z)`                         | Teleporta o player.                          |
    | `vRP.GetEntityCoords(source)`                        | Coords do ped.                               |
    | `vRP.InsideVehicle(source)`                          | `true` se estiver em qualquer veículo.       |
    | `vRP.InsideVehiclePassager(source)`                  | `true` se estiver como passageiro.           |
    | `vRP.InsidePropertys(Passport,Coords)`               | `true` se estiver dentro de uma propriedade. |
    | `vRP.Heading(source,Heading)`                        | Lê ou define a direção do ped.               |
    | `vRP.ModelPlayer(source)`                            | Model/skin atual do player.                  |
    | `vRP.DoesEntityExist(source)`                        | `true` se o ped do player existe.            |
    | `vRP.IsEntityVisible(source)`                        | `true` se o ped está visível.                |
    | `vRP.UpgradeHunger/Thirst/Stress(Passport,Amount)`   | Aumentam fome/sede/estresse (máx 100).       |
    | `vRP.DowngradeHunger/Thirst/Stress(Passport,Amount)` | Diminuem fome/sede/estresse (mín 0).         |
    | `vRP.GetExperience(Passport,Work)`                   | `(experiência, categoria)` da atividade.     |
    | `vRP.PutExperience(Passport,Work,Number)`            | Adiciona experiência.                        |

    <Note>
      Export relacionado: `exports.vrp:Bucket(source,Mode,Route)`: entra/sai de um routing bucket.
    </Note>
  </Accordion>

  <Accordion title="Banimento" icon="ban">
    | Função                                       | Descrição                                               |
    | -------------------------------------------- | ------------------------------------------------------- |
    | `vRP.Banned(source,Account)`                 | Verifica ban; retorna motivo ou `false`.                |
    | `vRP.SetBanned(Passport,Amount,Mode,Reason)` | Aplica ban (`Mode`: `"Permanente"`/`"Horas"`/`"Dias"`). |
    | `vRP.RemoveBanned(Passport)`                 | Remove o banimento.                                     |
  </Accordion>

  <Accordion title="Utilidades / Serviços externos" icon="wrench">
    | Função                                  | Descrição                                              |
    | --------------------------------------- | ------------------------------------------------------ |
    | `vRP.Request(source,Title,Message)`     | Diálogo de confirmação no cliente; retorna a resposta. |
    | `vRP.Revive(source,Health,Arena)`       | Revive o player.                                       |
    | `vRP.Task(source,Amount,Speed)`         | Barra de progresso.                                    |
    | `vRP.SelectVehicle(Passport,Name)`      | Row do veículo do dono.                                |
    | `vRP.format(n)`                         | Formata número com pontos de milhar.                   |
    | `vRP.Device(source,Seconds)`            | Minigame de dispositivo/hack; retorna o resultado.     |
    | `vRP.LetterGame(source,Duration,Speed)` | Minigame de letras; retorna o resultado.               |
    | `vRP.CleanPhone(Passport)`              | Limpa os dados do celular do personagem.               |
    | `vRP.SimpleData(Passport,Key)`          | Leitura direta de uma chave de `playerdata`.           |
    | `vRP.GenerateHash(Index)`               | Gera um hash único a partir de um índice.              |
  </Accordion>
</AccordionGroup>

***

## Aliases de compatibilidade que funcionam

Existem e apontam para funções reais (mas prefira os nomes oficiais acima):

`vRP.getUserId` → `Passport`; `vRP.getUserSource` → `Source`; `vRP.query` → `Query`; `vRP.getUserIdentity` → `Identity`; `vRP.userInventory` → `Inventory`; `vRP.giveInventoryItem` → `GiveItem`; `vRP.tryGetInventoryItem` → `TakeItem`; `vRP.removeInventoryItem` → `RemoveItem`; `vRP.getInventoryItemAmount` → `InventoryItemAmount`; `vRP.checkMaxItens` → `MaxItens`; `vRP.addBank`/`giveBankMoney` → `GiveBank`; `vRP.removeBankMoney` → `RemoveBank`; `vRP.getBank` → `GetBank`; `vRP.tryPayment`/`tryFullPayment` → `PaymentFull`; `vRP.hasPermission` → `HasPermission`; `vRP.getHealth` → `GetHealth`.

<Warning>
  **Aliases quebrados (NÃO use, apontam para função inexistente):** `vRP.setWeight`, `vRP.registerDrivers`, `vRP.userPremium`, `vRP.steamPremium`, `vRP.falseIdentity`, `vRP.getFines`, `vRP.addFines`, `vRP.delFines`, `vRP.generateStringNumber`.
</Warning>
