Pular para o conteúdo

Desenho na tela

Cliente

Estas são as funções de desenho do dia a dia: retângulos, imagens e texto, mais o que você precisa para medir e posicionar tudo isso. Como todo desenho no cliente, elas valem por um quadro — o lugar delas é dentro de um handler do evento onClientRender.

local telaW, telaH = getScreenSize()
local fonte = dxCreateFont("fontes/titulo.ttf", 14)
addEventHandler("onClientRender", root, function()
local texto = "Bem-vindo"
local largura = dxGetTextWidth(texto, 1, fonte)
-- caixa centralizada no topo da tela
dxDrawRectangle(telaW / 2 - largura / 2 - 12, 30, largura + 24, dxGetFontHeight(1, fonte) + 12,
tocolor(0, 0, 0, 170))
dxDrawText(texto, telaW / 2 - largura / 2, 36, 0, 0, tocolor(255, 255, 255, 255), 1, fonte)
-- um ícone ao lado
dxDrawImage(telaW / 2 - largura / 2 - 40, 32, 24, 24, "imagens/icone.png")
end)

A ordem importa: o que é desenhado depois fica por cima.

As cores são inteiros empacotados. Monte-as com tocolor(r, g, b, a), com os quatro canais de 0 a 255. Sem o argumento de cor, o padrão é branco opaco.

Nunca escreva posições em pixels fixos: peça o tamanho da tela com getScreenSize e trabalhe em proporção, senão o seu HUD sai do lugar em outra resolução.

Quando um argumento tem o tipo errado ou o desenho não pode ser feito, estas funções devolvem false e escrevem o motivo no console de debug. A única exceção é dxGetTextSize, que gera um erro de Lua quando recebe um argumento inválido.

Estas 9 funções existem somente no cliente. Chamá-las de um script de servidor resulta em erro de valor nulo.

Primitivas, desenho 3D, texturas, render targets e shaders ficam na página de Texturas, shaders e render targets.

Além das fontes carregadas com dxCreateFont, estes nomes podem ser passados direto como string:

NomeAparência
"default"Tahoma.
"default-bold"Tahoma, em negrito.
"clear"Verdana.
"arial"Arial.
"sans"Microsoft Sans Serif, em negrito.
"pricedown"Pricedown, a fonte dos títulos do GTA.
"bankgothic"Bank Gothic.
"diploma"Diploma.
"beckett"Beckett.
"unifont"Unifont, que cobre quase todos os caracteres Unicode.

As cinco últimas são arquivos de fonte que acompanham o cliente, então ficam iguais em qualquer máquina. Os nomes não diferenciam maiúsculas de minúsculas. Qualquer outro nome cai na fonte padrão — exceto em dxGetTextSize, onde gera um erro.