# Variables globales

> Variables globales disponibles automáticamente en todo script Lua de MY Multiplayer (MYMP) y dentro de handlers de evento.

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

**MY Multiplayer** (**MYMP**) define variables globales automáticas en todo script Lua, además de variables contextuales temporales mientras se ejecuta un handler de evento.

## En todo script

| Variable       | Lado       | Descripción                                                                                                  |
| -------------- | ---------- | ------------------------------------------------------------------------------------------------------------ |
| `root`         | Compartido | El elemento raíz del árbol de elementos. Todo elemento se ubica debajo de él.                                |
| `resourceRoot` | Compartido | El elemento raíz del [recurso](https://wiki.mymp.gg/es/docs/resources.md) que ejecuta el script; los elementos que crea quedan debajo de él. |
| `localPlayer`  | Cliente    | El elemento `player` que representa al jugador local de este cliente.                                        |
| `exports`      | Compartido | Tabla para llamar funciones que otros recursos declaran en `meta.xml`.                                       |

## Dentro de un handler de evento

MYMP asigna estas variables antes de invocar el handler y restaura sus valores anteriores cuando este termina.

| Variable         | Lado       | Descripción                                                                                                    |
| ---------------- | ---------- | -------------------------------------------------------------------------------------------------------------- |
| `source`         | Compartido | El elemento en el que se disparó el evento.                                                                    |
| `this`           | Compartido | El elemento al que se asoció el handler mediante `addEventHandler`.                                            |
| `eventName`      | Compartido | El nombre del evento disparado (`string`).                                                                     |
| `client`         | Servidor   | El jugador que envió el [evento remoto](https://wiki.mymp.gg/es/docs/custom-events.md), cuando provino de un cliente con `triggerServerEvent`. |
| `sourceResource` | Compartido | El recurso que disparó el evento o que llamó a la función exportada.                                           |

## Llamar funciones exportadas (exports)

`exports.recurso:funcion(...)` y `exports.recurso.funcion(...)` funcionan igual. Para que la llamada tenga éxito:

1. La función debe estar declarada en una etiqueta `<export>` del [meta.xml](https://wiki.mymp.gg/es/docs/resources.md) de ese recurso para el lado (`server`, `client` o `shared`) desde el que se invoca.
2. El recurso de destino debe estar en ejecución.

De lo contrario, la llamada registra un error en el log y devuelve `false`.

## Ejemplo

```lua
addEvent("onShopBuy", true)

addEventHandler("onShopBuy", resourceRoot, function(itemId)
    -- client: el jugador que envió el evento desde su cliente
    local price = exports.shop:getPrice(itemId)
    outputServerLog(getPlayerName(client) .. " compró " .. itemId .. " por " .. tostring(price))
end)
```
