# Estrutura de um recurso

> Organização de pastas de um recurso no MY Multiplayer (MYMP), manifesto meta.xml, tags suportadas e padrões de arquivos.

- **Plataforma**: MY Multiplayer (MYMP) — Lua 5.4
- **Seções**: Documentação › Primeiros passos
- **Idioma**: Português
- **URL**: https://wiki.mymp.gg/pt/docs/resources

No **MY Multiplayer** (**MYMP**), um **recurso** é uma pasta dentro do diretório `resources/` do servidor que contém um manifesto `meta.xml`. O servidor carrega e inicia os recursos listados com a diretiva `ensure` no arquivo [server.cfg](https://wiki.mymp.gg/pt/docs/server-config.md).

## Estrutura de pastas

```text
resources/
└── shop/
    ├── meta.xml
    ├── server/main.lua
    ├── client/ui.lua
    ├── images/logo.png
    └── modules/          veja "Módulos e import"
```

## Manifesto meta.xml

O arquivo `meta.xml` declara os metadados do recurso, scripts de servidor e cliente, arquivos transferidos aos jogadores, funções exportadas, mapas, modelos e dependências.

```xml
<meta>
    <!-- Informações do recurso -->
    <info name="Shop" author="MYMP" version="1.0.0" />

    <!-- Scripts -->
    <script src="server/*.lua" type="server" />
    <script src="client/**/*.lua" type="client" />

    <!-- Arquivos enviados aos clientes -->
    <file src="images/*.png" />

    <!-- Funções que outros recursos chamam -->
    <export function="getPrice" type="server" />

    <!-- Recursos iniciados antes deste -->
    <include resource="accounts" />
</meta>
```

### Tags aceitas no meta.xml

| Tag                                 | Descrição                                                                                             |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `<info>`                            | Define metadados livres em atributos (como `name`, `author`, `version`), lidos por `getResourceInfo`. |
| `<script src type>`                 | Declara um script Lua. `type` aceita `server` (padrão), `client` ou `shared`.                         |
| `<file src>`                        | Declara um arquivo estático enviado aos clientes (imagens, fontes, sons, etc.).                       |
| `<export function type>`            | Expõe uma função para chamada por outros recursos via [exports](https://wiki.mymp.gg/pt/docs/globals.md). `type` segue `<script>`.    |
| `<include resource>`                | Exige outro recurso, iniciado antes deste. Se o recurso incluído não existir, este não inicia.        |
| `<map src>`                         | Carrega um arquivo de mapa junto com o recurso.                                                       |
| `<dlc src>`                         | Carrega um pacote de conteúdo (DLC).                                                                  |
| `<model name type file col parent>` | Registra um modelo novo; `type` aceita `object`, `vehicle`, `ped` ou `weapon`.                        |
| `<ui src>`                          | Define a página HTML de interface web (NUI) do recurso.                                               |
| `<download_priority_group>`         | Define a prioridade na ordem de download entre recursos.                                              |

### Padrões de caminho em src

O atributo `src` em `<script>` e `<file>` aceita padrões curinga (globs) como `*.lua` e `**/*.lua`. Os arquivos correspondentes são carregados em ordem alfabética, ignorando duplicatas já incluídas por entradas anteriores no mesmo `meta.xml`. Quando um padrão não encontra nenhum arquivo, um aviso é registrado no log.

## Próximos passos

- Para dividir o código de um recurso em módulos reaproveitáveis sem listá-los no `meta.xml`, veja [Módulos e import](https://wiki.mymp.gg/pt/docs/modules.md).
- Para iniciar recursos automaticamente na abertura do servidor, veja [server.cfg](https://wiki.mymp.gg/pt/docs/server-config.md).
