# Estructura de un recurso

> Organización de carpetas de un recurso en MY Multiplayer (MYMP), manifiesto meta.xml, etiquetas admitidas y patrones de archivos.

- **Plataforma**: MY Multiplayer (MYMP) — Lua 5.4
- **Secciones**: Documentación › Primeros pasos
- **Idioma**: Español
- **URL**: https://wiki.mymp.gg/es/docs/resources

En **MY Multiplayer** (**MYMP**), un **recurso** es una carpeta dentro del directorio `resources/` del servidor que contiene un manifiesto `meta.xml`. El servidor carga e inicia los recursos indicados con `ensure` en [server.cfg](https://wiki.mymp.gg/es/docs/server-config.md).

## Estructura de carpetas

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

## El manifiesto meta.xml

El archivo `meta.xml` declara los metadatos del recurso, scripts de servidor y cliente, archivos enviados a los jugadores, funciones exportadas, mapas, modelos y dependencias.

```xml
<meta>
    <!-- Información del recurso -->
    <info name="Shop" author="MYMP" version="1.0.0" />

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

    <!-- Archivos enviados a los clientes -->
    <file src="images/*.png" />

    <!-- Funciones que llaman otros recursos -->
    <export function="getPrice" type="server" />

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

### Etiquetas admitidas en meta.xml

| Etiqueta                            | Descripción                                                                                             |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `<info>`                            | Define atributos libres de metadatos (como `name`, `author`, `version`), leídos por `getResourceInfo`.  |
| `<script src type>`                 | Declara un script Lua. `type` es `server` (valor por defecto), `client` o `shared`.                     |
| `<file src>`                        | Declara un archivo estático que se envía a los clientes (imágenes, fuentes, sonidos, etc.).             |
| `<export function type>`            | Expone una función para otros recursos mediante [exports](https://wiki.mymp.gg/es/docs/globals.md). `type` funciona como en `<script>`. |
| `<include resource>`                | Inicia otro recurso antes que este. Si ese recurso no existe, este no inicia.                           |
| `<map src>`                         | Carga un mapa junto con el recurso.                                                                     |
| `<dlc src>`                         | Carga un paquete de contenido (DLC).                                                                    |
| `<model name type file col parent>` | Registra un modelo nuevo; `type` es `object`, `vehicle`, `ped` o `weapon`.                              |
| `<ui src>`                          | Define la página HTML de interfaz web (NUI) del recurso.                                                |
| `<download_priority_group>`         | Define el orden de prioridad de descarga entre recursos.                                                |

### Patrones de ruta en src

El atributo `src` en `<script>` y `<file>` acepta patrones comodín (globs) como `*.lua` y `**/*.lua`. Los archivos que coinciden entran en orden alfabético, sin repetir los que ya haya listado una entrada anterior del mismo `meta.xml`. Un patrón que no coincide con ningún archivo queda registrado en el log.

## Próximos pasos

- Para dividir el código de un recurso en partes reutilizables sin declararlas en `meta.xml`, consulta [Módulos e import](https://wiki.mymp.gg/es/docs/modules.md).
- Para configurar qué recursos inicia el servidor al arrancar, consulta [server.cfg](https://wiki.mymp.gg/es/docs/server-config.md).
