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

# five-elevator

> Elevadores por teleporte: o jogador interage num ponto, escolhe um andar num painel NUI e é teleportado para as coordenadas configuradas, com fade de tela e som.

O **five-elevator** cria pontos de interação em coordenadas pré-definidas. Cada "elevador" é um conjunto de andares (`floors`), cada um com coordenadas próprias. Ao interagir, o jogador vê a lista de andares (o andar atual é calculado por proximidade e fica desabilitado) e seleciona o destino. A lista é filtrada por permissão no servidor; o andar de origem nunca é ocultado.

## Funcionalidades

<CardGroup cols={2}>
  <Card title="Teleporte por andar" icon="elevator">
    Painel NUI lista os andares disponíveis e teleporta o jogador ao destino escolhido.
  </Card>

  <Card title="Andar atual desabilitado" icon="location-dot">
    O andar de origem é calculado por proximidade e fica desabilitado na lista.
  </Card>

  <Card title="Restrição por permissão" icon="lock">
    Andares com `permission` só aparecem para quem tem acesso (exceto o de origem).
  </Card>

  <Card title="Fade e som" icon="volume-high">
    Transição com fade de tela e som ao mudar de andar.
  </Card>
</CardGroup>

***

## Dependências

<CardGroup cols={2}>
  <Card title="vrp" icon="cube">
    `vRP.Passport`, `vRP.HasTable`, `vRP.HasPermission`.
  </Card>

  <Card title="sleepless_interact" icon="hand-pointer">
    Cria os pontos (único sistema implementado).
  </Card>
</CardGroup>

<Info>
  Runtime: `Notify`, `sounds:source`, `Theme.main` (prioridade na cor).
</Info>

***

## Configuração

`config/config.lua` (tabela `Elevator`):

<AccordionGroup>
  <Accordion title="config/config.lua — Tema, interação e elevadores" icon="sliders">
    ```lua theme={null}
    Elevator.ThemeColor = "#0143bb"   -- Theme.main tem prioridade

    Elevator.Interaction = {
        System = "sleepless",          -- só "sleepless" está implementado
        Sleepless = { Label = "Abrir Elevador", Icon = "elevator", Distance = 1.5 },
    }

    Elevator.Locations = {
        -- cada item é um elevador; o ÍNDICE (1,2,3...) é o id interno
        {
            -- permission = "Grupo",  -- (opcional) permissão para o elevador inteiro
            floors = {
                { label = "Heliponto", coords = { -1023.66, -432.89, 77.36, 116.23 } },
                { label = "Térreo",    coords = { -1025.2, -429.37, 39.82, 150.24 } },
                { label = "Escritório", coords = { -673.81,-688.87,30.31,181.42 }, permission = "Lavagem3" },
            },
        },
    }
    ```

    Cada andar (`floor`): `label`, `coords` (`{x,y,z[,heading]}`; teleporta em `z-1`) e `permission` opcional (string → `HasPermission`, ou tabela → `HasTable`). Andares com `permission` só aparecem para quem tem acesso (exceto o andar de origem).

    <Note>
      Já vêm 14 elevadores configurados (Hospital, Torre, DP Civil, etc.).
    </Note>
  </Accordion>
</AccordionGroup>

***

## Comandos

Nenhum (interação por `sleepless_interact`).

***

## Localizações

Definidas em `Elevator.Locations` (`config/config.lua`). São 14 elevadores; cada andar (`floor`) é um ponto de interação/teleporte (o teleporte ocorre em `z-1`). Por serem muitos pontos (mais de 30 no total), segue a contagem de andares por elevador com uma coordenada representativa de cada; a lista completa está em `Elevator.Locations`.

| Elevador                 | Andares | Coordenada representativa (1º floor: x, y, z) | Tipo                                                   |
| ------------------------ | ------- | --------------------------------------------- | ------------------------------------------------------ |
| Hospital                 | 5       | -1023.66, -432.89, 77.36 (Heliponto)          | Andares de teleporte                                   |
| Torre                    | 3       | -855.89, -2144.09, 106.71 (2º Andar)          | Andares de teleporte                                   |
| Vermelho                 | 2       | -286.64, -723.12, 125.46 (Cobertura)          | Andares de teleporte                                   |
| Eclipse                  | 2       | -775.42, 328.65, 240.14 (Cobertura)           | Andares de teleporte                                   |
| Campo de Golf            | 2       | -1186.57, -186.15, 87.28 (Cobertura)          | Andares de teleporte                                   |
| Vanilla Norte (Lavagem4) | 2       | -293.88, 6266.17, 31.49 (Boate)               | Andares de teleporte                                   |
| Vanilla Sul (Lavagem3)   | 7       | -690.79, -689.55, 54.95 (Rooftop)             | Andares de teleporte (alguns com permissão `Lavagem3`) |
| Bunker Parafal           | 2       | -403.64, -87.25, 54.73 (Entrada)              | Andares de teleporte                                   |
| Mafia Lago               | 2       | 556.29, -1821.32, 25.63 (Entrada)             | Andares de teleporte                                   |
| Studio                   | 5       | -329.52, 1140.28, 1142.42 (Cenários)          | Andares de teleporte                                   |
| Tribunal                 | 5       | -533.02, 1155.84, 363.28 (Heliponto)          | Andares de teleporte                                   |
| DP Civil (elevador 1)    | 2       | -998.16, -1967.14, 44.75 (Heliponto)          | Andares de teleporte                                   |
| DP Civil (elevador 2)    | 2       | -990.07, -1975.56, 44.75 (Heliponto)          | Andares de teleporte                                   |
| Triade (Municao1)        | 2       | 380.46, -15.01, 83.0 (Garagem)                | Andares de teleporte                                   |

<Note>
  A config tem 14 entradas em `Elevator.Locations` (cada andar de cada elevador é um ponto). Andares com campo `permission` (ex.: Escritório/Garagem da Vanilla Sul, `Lavagem3`) só aparecem para quem tem acesso.
</Note>

***

## Exports

Nenhum. Eventos úteis para integração:

| Evento                   | Parâmetros | Descrição                     |
| ------------------------ | ---------- | ----------------------------- |
| `five-elevator:teleport` | `coords`   | Teleporta direto.             |
| `five-elevator:showMenu` | N/A        | Abre o elevador mais próximo. |

***

## Banco de Dados

Nenhum. Permissões via vRP.

***

## Customização

* **Novo elevador:** adicione uma entrada em `Elevator.Locations` com sua lista `floors`.
* **Andares:** edite `floors` (lembre que `z-1` é o destino).
* **Restrição por andar/elevador:** campo `permission` (string ou tabela).
* **Ponto de interação:** `Elevator.Interaction.Sleepless`.
* **Cor:** `Elevator.ThemeColor` (ou `Theme.main`).
