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

# plants

> Motor genérico de plantações (drogas e frutos): cria plantas no mundo a partir de sementes/clones, com tempo de crescimento, rega, pureza, colheita e clonagem, persistindo tudo no banco.

O **plants** é o motor genérico de plantações. Ele não define quais plantas existem, apenas recebe pedidos via export `Plants` e cuida do ciclo de vida: cria o prop no chão + zona `ox_target` (opção **Verificar**), controla crescimento e rega, gera o item de colheita (quantidade influenciada por pureza e rega), permite clonar e destruir (polícia/admin), remove plantas atingidas por molotov ou apodrecidas, e persiste tudo.

Quem "planta" é o `inventory`: ao usar uma semente/clone, chama `exports.plants:Plants(...)`. Os tipos, rendimentos e props vêm de `Clones`/`Puritys` em `vrp/config/Item.lua`. Cada plantação tem id `LLDD`.

## Funcionalidades

<CardGroup cols={2}>
  <Card title="Ciclo de vida completo" icon="seedling">
    Cria o prop no chão, controla crescimento e rega, e remove plantas atingidas por molotov ou apodrecidas.
  </Card>

  <Card title="Pureza e rendimento" icon="flask">
    A quantidade colhida é influenciada pela pureza (`Puritys`) e pelo nível de rega da planta.
  </Card>

  <Card title="Clonagem" icon="copy">
    Clone uma plantação faltando ≤1h para o crescimento, gerando itens de clone por pureza.
  </Card>

  <Card title="Persistência" icon="database">
    Todas as plantações são serializadas em `entitydata` e restauradas após reinício.
  </Card>
</CardGroup>

***

## Dependências

<CardGroup cols={2}>
  <Card title="vrp" icon="cube">
    Framework base.
  </Card>

  <Card title="PolyZone" icon="draw-polygon">
    Zonas de área.
  </Card>

  <Card title="ox_target" icon="bullseye">
    Zona com a opção **Verificar**.
  </Card>

  <Card title="dynamic" icon="desktop">
    Menu de informações da plantação.
  </Card>
</CardGroup>

<Info>
  **inventory** fornece os `Drops` e dispara o export ao usar uma semente/clone.
</Info>

***

## Configuração

<Note>
  Sem pasta `config/`. As plantas vivem em `vrp/config/Item.lua` (`Clones` e `Puritys`).
</Note>

<AccordionGroup>
  <Accordion title="Clones — definição dos tipos de planta" icon="seedling">
    Cada tipo: `Clone` (item base colhido), `Name`, `Min`/`Max` (faixa de rendimento), `Hash` (prop). Item de clonagem usado para plantar = `<Clone>clone_<Percent>`.
  </Accordion>

  <Accordion title="Puritys — níveis de pureza" icon="flask">
    Níveis de pureza (`Percent`) com peso (`Chance`); pureza alta é rara. Multiplica o rendimento.
  </Accordion>

  <Accordion title="Parâmetros fixos no código" icon="gears">
    ```lua theme={null}
    Timer = os.time() + 7200                  -- crescimento: 2h
    (Plants[n].Timer - os.time()) <= 3600     -- clonagem: faltando ≤1h
    Plants[n].Water = Water + 0.20            -- rega: +20% (item purifiedwater), máx 1.0
    (os.time() - Plants[n].Timer) > 36000     -- apodrecimento: 10h sem colher
    #(Coords - Other) <= 50                   -- distância de render
    #(Coords - Molotov) <= 5                  -- raio de destruição por molotov
    ```
  </Accordion>

  <Accordion title="Adicionar uma planta" icon="plus">
    Inclua uma entrada em `Clones` (ex.: `{ Clone="lavender", Name="Lavanda", Min=4, Max=8, Hash="bkr_prop_weed_med_01b" }`). O vRP cria automaticamente o item colhido e os itens de clonagem `lavenderclone_0`…`_100`.
  </Accordion>
</AccordionGroup>

***

## Comandos

Nenhum. Interação por `ox_target` + menu `dynamic`.

***

## Exports

O script disponibiliza o export abaixo.

**`exports.plants:Plants(Hash, Coords, Route, Item, Amount, Purity)`** (servidor): cria uma plantação (`Water = 0.0`, `Timer = os.time()+7200`, `Amount = random(Min,Max)`), gera id único e dispara `plants:New`.

***

## Eventos

### Interfaces Tunnel

Expõe a interface Tunnel `plants` (servidor), com o método `Informations(Number)` (abre o menu/informações da plantação `Number`).

### Recebidos no servidor

| Evento           | Descrição                                                                   |
| ---------------- | --------------------------------------------------------------------------- |
| `plants:Collect` | Colhe a plantação informada (gera o item de colheita conforme pureza/rega). |
| `plants:Cloning` | Clona a plantação (disponível faltando ≤1h para o crescimento).             |
| `plants:Water`   | Rega a plantação (consome `purifiedwater`, +20% até 1.0).                   |
| `plants:Destroy` | Destrói a plantação (polícia/admin).                                        |
| `Connect`        | Jogador conectou (core); sincroniza estado das plantações.                  |
| `Disconnect`     | Jogador desconectou (core).                                                 |
| `SaveServer`     | Persiste todas as plantações em `entitydata` (core).                        |
| `explosionEvent` | Detecta molotov e remove plantações no raio de destruição.                  |

### Cliente

| Evento                | Descrição                                                     |
| --------------------- | ------------------------------------------------------------- |
| `plants:Table`        | Recebe a tabela completa de plantações do servidor.           |
| `plants:New`          | Cria localmente uma nova plantação (prop + zona `ox_target`). |
| `plants:Remove`       | Remove localmente a plantação informada.                      |
| `plants:Informations` | Abre as informações/menu da plantação.                        |

***

## Banco de Dados

Sem tabela própria. Serializa em `entitydata` (linha `Name = "Plants"`) via `entitydata/SetData` no `SaveServer`. Cada planta guarda os campos abaixo.

| Campo    | Descrição                    |
| -------- | ---------------------------- |
| `Water`  | Nível de rega (0.0–1.0).     |
| `Hash`   | Prop da planta.              |
| `Item`   | Item base colhido.           |
| `Route`  | Routing bucket.              |
| `Coords` | Coordenadas no mundo.        |
| `Purity` | Nível de pureza.             |
| `Timer`  | Timestamp de crescimento.    |
| `Amount` | Quantidade base de colheita. |

***

## Customização

* **Rendimento da colheita:** `Amount * (1 + Purity/100)` + bônus de rega (`Valuation * Water`).
* **Rendimento da clonagem:** 2 unidades base de `<Item>clone_<Purity>` + bônus de rega.
* **Item/passo de rega:** `purifiedwater` / `0.20` (`plants:Water`).
* **Permissão para destruir:** polícia ou `state.Admin`.
* **Tempos (2h crescimento, 1h clonagem, 10h apodrecer):** fixos em `server-side/core.lua`.
