# Variáveis globais

> Variáveis globais definidas automaticamente em todo script Lua do MY Multiplayer (MYMP) e dentro de handlers de evento.

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

O **MY Multiplayer** (**MYMP**) disponibiliza variáveis globais automáticas em todo script Lua, além de variáveis de contexto temporárias preenchidas durante a execução de handlers de evento.

## Em todo script

| Variável       | Lado          | Descrição                                                                                         |
| -------------- | ------------- | ------------------------------------------------------------------------------------------------- |
| `root`         | Compartilhado | Elemento raiz da árvore de elementos. Todos os elementos existem abaixo dele.                     |
| `resourceRoot` | Compartilhado | Elemento raiz do [recurso](https://wiki.mymp.gg/pt/docs/resources.md) que está executando o script; elementos criados ficam nele. |
| `localPlayer`  | Cliente       | Elemento `player` correspondente ao jogador local deste cliente.                                  |
| `exports`      | Compartilhado | Tabela de acesso às funções exportadas por outros recursos em `meta.xml`.                         |

## Dentro de um handler de evento

O MYMP define estas variáveis imediatamente antes de executar a função do handler e restaura os valores anteriores assim que ela termina.

| Variável         | Lado          | Descrição                                                                                                      |
| ---------------- | ------------- | -------------------------------------------------------------------------------------------------------------- |
| `source`         | Compartilhado | Elemento no qual o evento foi disparado.                                                                       |
| `this`           | Compartilhado | Elemento ao qual o handler foi ligado em `addEventHandler`.                                                    |
| `eventName`      | Compartilhado | Nome do evento disparado (`string`).                                                                           |
| `client`         | Servidor      | Jogador que enviou o [evento remoto](https://wiki.mymp.gg/pt/docs/custom-events.md), quando originado por um cliente via `triggerServerEvent`. |
| `sourceResource` | Compartilhado | Recurso que disparou o evento ou que chamou a função exportada.                                                |

## Chamando funções exportadas (exports)

As sintaxes `exports.recurso:funcao(...)` e `exports.recurso.funcao(...)` têm o mesmo comportamento. Para a chamada funcionar:

1. A função precisa estar declarada em uma tag `<export>` no [meta.xml](https://wiki.mymp.gg/pt/docs/resources.md) daquele recurso para o mesmo lado (`server`, `client` ou `shared`) em que está sendo chamada.
2. O recurso alvo precisa estar em execução.

Caso contrário, a chamada registra um erro no log e devolve `false`.

## Exemplo

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

addEventHandler("onShopBuy", resourceRoot, function(itemId)
    -- client: o jogador que enviou o evento pelo cliente
    local price = exports.shop:getPrice(itemId)
    outputServerLog(getPlayerName(client) .. " comprou " .. itemId .. " por " .. tostring(price))
end)
```
