> ## 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.

# inventory

> Sistema de inventário e itens com sistema de peso, em NUI. Inclui armamento, drops no chão, crafting, missões, baús de loot e roubos.

O **inventory** é o recurso central de itens da base. Controla a mochila do jogador (NUI), uso de itens (consumíveis, armamento, munição, anexos, arremessos), drops no chão, transferências, crafting via blueprints, missões, baús de loot e sistemas de roubo. Publica a interface `inventory` (tabela `Core`) no servidor e cliente.

<Note>
  A **definição dos itens** (nome, peso, tipo) NÃO fica aqui, está em `@vrp/config/Item.lua`. O cálculo de peso e `GiveItem`/`TakeItem`/`CheckWeight` pertencem ao core vRP.
</Note>

## Funcionalidades

<CardGroup cols={2}>
  <Card title="Mochila com Peso" icon="box">
    Inventário NUI com sistema de peso, slots e itens bloqueados, sincronizado com o core vRP.
  </Card>

  <Card title="Uso de Itens" icon="hand-holding">
    Consumíveis, armamento, munição, anexos e arremessos, com handlers na tabela `Use`.
  </Card>

  <Card title="Drops no Chão" icon="arrow-down-to-line">
    Itens largados no mundo, desenhados conforme a distância (`DistanceDrops`).
  </Card>

  <Card title="Crafting" icon="hammer">
    Receitas via blueprints (`blueprint_<item>`) definidas na tabela `Crafting`.
  </Card>

  <Card title="Missões" icon="list-check">
    Missões de troca com requisitos e recompensas, definidas na tabela `Missions`.
  </Card>

  <Card title="Baús e Roubos" icon="lock">
    Baús de loot e sistemas de roubo (pontos em `Robbery`), com explosões e despachos.
  </Card>
</CardGroup>

***

## Dependências

<CardGroup cols={2} />

<Info>
  **Tunnels:** `device`, `player`, `garages`, `survival`, `keyboard`, `paramedic`. **Opcionais (runtime):** `five-skins`, `five_logs`, `discord`, `five-vehicles`, `party`, `hud`.
</Info>

***

## Configuração

<AccordionGroup>
  <Accordion title="shared-side/shared.lua — drops, sprays, crafting, missões, roubo" icon="sliders">
    Sem pasta `config/`.

    ```lua theme={null}
    DistanceDrops = 25   -- distância (m) p/ desenhar drops no chão

    Sprays = { spray_ballas = { "Ballas", 50 }, ... }  -- pichações

    Crafting = {                          -- receitas (exige blueprint_<item>)
        medkit = { Amount = 1, Required = { saline = 1, alcohol = 1, gauze = 3 } },
    }

    Missions = {                          -- missões de troca
        { Xp = 100, Code = "MISSION01", Title = "...", Required = { blue_essence = 10 }, Rewards = { purple_essence = 10 } },
    }

    Robbery = { { Coords = vec3(...), Mode = "Ammunation" }, ... }  -- pontos de roubo
    ```
  </Accordion>

  <Accordion title="server-side/core.lua — buffs, produtos e baús" icon="server">
    `Buffs` (`Dexterity`, `Luck`), `Products` (coleta: lixo/cemitério/leiteiro), `Loots` (baús).
  </Accordion>

  <Accordion title="server-side/itens.lua — handlers de uso" icon="hand-holding">
    Handlers de uso de item na tabela `Use`, chave = `Index` do item.
  </Accordion>
</AccordionGroup>

***

## Comandos

| Comando           | Descrição                                                 |
| ----------------- | --------------------------------------------------------- |
| `/Inventory`      | Abre/fecha a mochila (keymapping padrão \`\`\` / OEM\_3). |
| `/objects <hash>` | (Admin nível 4) coloca prop no mundo.                     |

***

## Exports

```lua theme={null}
exports.inventory:Buffs(Mode, Passport)         -- buff ativo? (Dexterity/Luck)
exports.inventory:CleanWeapons(Passport)        -- limpa anexos/munições
exports.inventory:Blueprint(Passport, Item)     -- blueprint aprendido?
exports.inventory:Drops(Passport, source, Item, Amount, Force, Coords)  -- cria drop
exports.inventory:ExistSkin(Passport, Number)   -- skin pertence ao jogador?
exports.inventory:GeneratePlate()               -- placa única
```

***

## Eventos

Publica a interface `inventory` (tabela `Core`) tanto no servidor quanto no cliente.

### Recebidos no servidor

| Evento                         | Descrição                                                 |
| ------------------------------ | --------------------------------------------------------- |
| `inventory:Cancel`             | Cancela a ação/progresso atual do jogador.                |
| `inventory:Loot`               | Saqueia um baú de loot (`Number`, `Box`).                 |
| `inventory:SaveArena`          | Salva anexos/munições do jogador ao entrar na arena.      |
| `inventory:ApplyArena`         | Reaplica anexos/munições salvos da arena.                 |
| `inventory:ChangePlate`        | Altera a placa de um veículo.                             |
| `inventory:StealTrunk`         | Furta o porta-malas de um veículo.                        |
| `inventory:Animals`            | Coleta recursos de animais (caça/abate).                  |
| `inventory:Products`           | Coleta de produtos por serviço (lixo/cemitério/leiteiro). |
| `inventory:RemoveTyres`        | Remove os pneus de um veículo.                            |
| `inventory:Drink`              | Bebe (consumo de líquido).                                |
| `inventory:RefillGallon`       | Reabastece um galão.                                      |
| `inventory:RefillBottle`       | Reabastece uma garrafa.                                   |
| `inventory:Tow`                | Carrega item em reboque (`Vehicle`, `Selected`, `Mode`).  |
| `inventory:Stockade`           | Saqueia carro-forte (stockade).                           |
| `inventory:Carry`              | Carrega outro jogador (corda).                            |
| `inventory:ServerCarry`        | Processa o carregamento entre dois jogadores (algema).    |
| `inventory:CarryDetach`        | Solta o jogador carregado.                                |
| `inventory:RobberyActive`      | Marca um ponto de roubo como ativo.                       |
| `inventory:Robbery`            | Inicia o roubo (`Number`, `Mode`).                        |
| `inventory:Dismantle`          | Desmancha um veículo (`Entity`).                          |
| `inventory:Boosting`           | Atualiza o status de boosting de uma placa.               |
| `inventory:StoreObjects`       | Recolhe objetos/props do mundo.                           |
| `inventory:BuffServer`         | Aplica buff ao jogador (Dexterity/Luck).                  |
| `inventory:SkinPlayer`         | Aplica skin de arma ao jogador.                           |
| `itemdata:Save`                | Persiste o conteúdo de um item gravável (ex.: notepad).   |
| `player:RollVehicle`           | Vira/desvira um veículo.                                  |
| `garages:Delete`               | Remove um veículo da garagem (`Network`, `Plate`).        |
| `moneywash:Swap`               | Troca/processo de itens da lavagem de dinheiro.           |
| `five-vehicles:vehicleCreated` | Hook ao criar um veículo (associa itens).                 |
| `Connect`                      | Carrega o inventário do jogador ao conectar.              |
| `Disconnect`                   | Salva/limpa o inventário ao desconectar.                  |
| `SaveServer`                   | Persiste inventários/drops/objetos periodicamente.        |

### Cliente: inventário e NUI

| Evento                   | Descrição                                       |
| ------------------------ | ----------------------------------------------- |
| `inventory:Open`         | Abre a mochila (NUI).                           |
| `inventory:Close`        | Fecha a mochila.                                |
| `inventory:Update`       | Atualiza os itens exibidos na NUI.              |
| `inventory:Notify`       | Exibe notificação (`Title`, `Message`, `Type`). |
| `inventory:Use`          | Usa um item (`Slot`, `Amount`).                 |
| `inventory:Buttons`      | Exibe botões contextuais de ação.               |
| `inventory:CloseButtons` | Oculta os botões contextuais.                   |
| `inventory:Blueprint`    | Atualiza a tela de blueprints/crafting.         |

### Cliente: drops

| Evento                     | Descrição                         |
| -------------------------- | --------------------------------- |
| `inventory:Drops`          | Recebe a lista de drops no chão.  |
| `inventory:DropsAdicionar` | Adiciona um drop.                 |
| `inventory:DropsRemover`   | Remove um drop.                   |
| `inventory:DropsAtualizar` | Atualiza a quantidade de um drop. |

### Cliente: veículos

| Evento                    | Descrição                                         |
| ------------------------- | ------------------------------------------------- |
| `inventory:RepairBoosts`  | Repara melhorias/boosts do veículo.               |
| `inventory:RepairTyres`   | Repara pneus específicos.                         |
| `inventory:RepairDefault` | Reparo padrão do veículo.                         |
| `inventory:RepairAdmin`   | Reparo administrativo.                            |
| `inventory:explodeTyres`  | Estoura pneus do veículo.                         |
| `inventory:Tow`           | Inicia o reboque (cliente).                       |
| `inventory:ClientTow`     | Aplica o reboque (`Vehicle`, `Selected`, `Mode`). |
| `dismantle:Reset`         | Reseta o estado de desmanche.                     |
| `dismantle:Dispatch`      | Aciona despacho policial no desmanche.            |

### Cliente: armamento e skins

| Evento                   | Descrição                                         |
| ------------------------ | ------------------------------------------------- |
| `inventory:Skins`        | Recebe as skins de arma disponíveis.              |
| `inventory:CreateWeapon` | Cria/entrega uma arma.                            |
| `inventory:RemoveWeapon` | Remove uma arma.                                  |
| `inventory:verifyWeapon` | Verifica/sincroniza dados de uma arma.            |
| `inventory:CleanWeapons` | Limpa anexos/munições das armas.                  |
| `inventory:Camera`       | Controla a câmera para captura de screenshot.     |
| `CEventGunShot`          | Evento de jogo (tiro) usado para lógica de armas. |

### Cliente: drogas (consumo)

| Evento            | Descrição                                           |
| ----------------- | --------------------------------------------------- |
| `Cocaine`         | Aplica efeito de cocaína.                           |
| `Methamphetamine` | Aplica efeito de metanfetamina.                     |
| `Metadone`        | Aplica efeito de metadona.                          |
| `Heroin`          | Aplica efeito de heroína.                           |
| `Crack`           | Aplica efeito de crack.                             |
| `Joint`           | Aplica efeito de baseado.                           |
| `Oxycontin`       | Aplica efeito de oxicodona.                         |
| `Energetic`       | Aplica efeito de energético (`Time`, `Multiplier`). |

### Cliente: diversos

| Evento                  | Descrição                                      |
| ----------------------- | ---------------------------------------------- |
| `inventory:Cleaner`     | Limpa um ped/objeto.                           |
| `inventory:Scuba`       | Equipa equipamento de mergulho.                |
| `inventory:ScubaRemove` | Remove o equipamento de mergulho.              |
| `inventory:Explosion`   | Cria explosão em coordenadas (roubo).          |
| `inventory:Ration`      | Distribui ração (caça).                        |
| `moneywash:Init`        | Inicializa a interação de lavagem de dinheiro. |
| `moneywash:Send`        | Envia dados de lavagem (`Number`, `Value`).    |

### NUI Callbacks

| Callback        | Descrição                                      |
| --------------- | ---------------------------------------------- |
| `BackInventory` | Retorna à mochila principal.                   |
| `Close`         | Fecha a NUI.                                   |
| `Use`           | Usa um item.                                   |
| `Send`          | Transfere item para outro jogador.             |
| `Store`         | Guarda item em um container.                   |
| `Take`          | Retira item de um container.                   |
| `Update`        | Solicita atualização dos dados.                |
| `Mount`         | Monta/carrega um inventário na interface.      |
| `Blueprint`     | Abre a tela de blueprints.                     |
| `Crafting`      | Executa uma receita de crafting.               |
| `Missions`      | Abre/lista as missões.                         |
| `RescueMission` | Reivindica/resgata a recompensa de uma missão. |

***

## Banco de Dados

Não cria tabelas próprias. Persiste via vRP (`playerdata/SetData`: `Ammos`, `Attachs`, `Skins`, `Blueprints`, `Missions`; `entitydata` p/ objetos). Manipulação de itens/peso via funções do core vRP.

***

## Customização

* **Itens:** `@vrp/config/Item.lua` (nome/peso/tipo). **Comportamento de uso:** tabela `Use` em `server-side/itens.lua`.
* **Crafting/Missões/Roubo/Sprays:** `shared-side/shared.lua`.
* **Coleta/Baús:** `Products`/`Loots` em `server-side/core.lua`.
* **Peso máximo:** core vRP (peso base + `Backpack` de grupos + mochila no slot 104).

<Note>
  A NUI é um build em `web-side/` (sem fonte React). Edições visuais nos arquivos diretos.
</Note>
