# dxDrawSpotLight (Cliente)

> Acende uma luz dentro de um cone por um único quadro, sem criar elemento.

- **Plataforma**: MY Multiplayer (MYMP)
- **Tipo**: Função Lua
- **Lado**: Cliente
- **Categoria**: Luzes
- **URL**: https://wiki.mymp.gg/pt/dxDrawSpotLight

## Sintaxe

```lua
bool dxDrawSpotLight(float x, y, z, float dirX, dirY, dirZ, float radius, color color [, float cone = 30, float hardness = 0.5, float intensity = 1, float falloff = 4, float sourceRadius = 0.1, bool castShadow = false])
```

## Parâmetros

| Nome | Tipo | Descrição |
| --- | --- | --- |
| `x, y, z` | `float` | Posição da luz no mundo, três números ou um vec3. |
| `dirX, dirY, dirZ` | `float` | Para onde a luz aponta. Três números ou um vec3, finito e não nulo; é normalizado. |
| `radius` | `float` | Alcance em metros, maior que 0 e até 1000. |
| `color` | `color` | Três números `r, g, b` (inteiros de 0 a 255) ou um valor de `tocolor`. O alfa é ignorado. |
| `cone` | `float` | Metade da abertura do cone, em graus a partir do eixo, maior que 0 e até 90. *(padrão: `30`)* |
| `hardness` | `float` | Parte do cone iluminada por inteiro, de 0 a 1. Acima de 0.99 vale 0.99. *(padrão: `0.5`)* |
| `intensity` | `float` | Multiplicador de brilho, de 0 a 1000. Em 1, uma luz branca brilha com 12 de radiância HDR. *(padrão: `1`)* |
| `falloff` | `float` | Expoente do desvanecimento até o raio, de 0.1 a 32. Valores maiores mantêm a luz forte até mais perto da borda. *(padrão: `4`)* |
| `sourceRadius` | `float` | Raio do bulbo em metros, de 0 até o alcance da luz. Sem ele, 0.1 ou o alcance, o que for menor. *(padrão: `0.1`)* |
| `castShadow` | `bool` | Se a luz projeta sombras. *(padrão: `false`)* |

## Retorno

`true` se a luz entrou na fila do quadro. `false` quando 256 luzes já estão na fila, ou com um argumento errado.

A luz vale para um único quadro. Uma chamada feita antes de o mundo ser desenhado (por exemplo em `onClientPreRender` ou `onClientRender`) ilumina esse quadro; uma feita depois ilumina o próximo. Chamadas feitas enquanto nenhum quadro roda são descartadas. Passar de 256 luzes num quadro registra um aviso uma vez, até um quadro sobrar espaço na fila.

## Exemplo

```lua
addEventHandler("onClientPreRender", root, function()
    local pos = getElementPosition(localPlayer)
    local a = math.rad(getElementRotation(localPlayer).z)
    dxDrawSpotLight(pos.x, pos.y, pos.z + 0.6, -math.sin(a), math.cos(a), -0.2, 30, 255, 250, 230, 20)
end)
```

### Vindo do MTA

O MTA não tem luzes dinâmicas.

## Veja também

- [createSpotLight (Cliente)](https://wiki.mymp.gg/pt/createSpotLight.md): Cria uma luz que ilumina dentro de um cone, como um holofote. A luz existe só neste cliente.
- [dxDrawPointLight (Cliente)](https://wiki.mymp.gg/pt/dxDrawPointLight.md): Acende uma luz em todas as direções a partir de um ponto, por um único quadro, sem criar elemento.
- [dxDrawRectLight (Cliente)](https://wiki.mymp.gg/pt/dxDrawRectLight.md): Acende uma luz que sai de um retângulo por um único quadro, sem criar elemento.
- [onClientPreRender (Cliente)](https://wiki.mymp.gg/pt/onClientPreRender.md): Disparado a cada quadro, depois da simulação do mundo e antes de o mundo ser desenhado.
