Pular para o conteúdo

onClientRender

Cliente Não cancelável

Disparado uma vez por quadro, no meio do trio de desenho.

A raiz (root).

Este evento não tem parâmetros.

Não.

Este é o gancho em que quase todo o desenho na tela se apoia. Como o desenho vale por um quadro só, uma HUD é literalmente “redesenhar a mesma coisa 60 vezes por segundo”. O que sai da conta é tudo que não muda a cada quadro: o tamanho da tela, as cores, as posições fixas. Calcule isso uma vez, fora do manipulador.

local telaW, telaH = getScreenSize()
local barraL, barraA = 240, 18
local barraX, barraY = 20, telaH - 60
local fundo = tocolor(0, 0, 0, 170)
local vida = tocolor(210, 60, 60, 255)
local texto = tocolor(255, 255, 255, 255)
addEventHandler("onClientRender", root, function()
local pontos = getElementHealth(localPlayer) or 0
local fracao = math.max(0, math.min(1, pontos / 100))
dxDrawRectangle(barraX - 2, barraY - 2, barraL + 4, barraA + 4, fundo)
dxDrawRectangle(barraX, barraY, barraL * fracao, barraA, vida)
dxDrawText(math.floor(pontos) .. " HP", barraX, barraY, barraX + barraL, barraY + barraA,
texto, 1, "default-bold", "center", "center")
end)

Quando a HUD deixa de ser necessária, tire o manipulador — enquanto ele estiver preso, roda em todo quadro:

local function desenharHud()
dxDrawRectangle(10, 10, 120, 20, tocolor(0, 0, 0, 150))
end
addEventHandler("onClientRender", root, desenharHud)
-- some com a HUD depois de 10 segundos
setTimer(function()
removeEventHandler("onClientRender", root, desenharHud)
end, 10000, 1)
  • onClientPedsProcessed — Disparado uma vez por quadro, depois que todos os personagens do mundo foram atualizados e antes de qualquer coisa ser desenhada.
  • onClientPreRender — Disparado uma vez por quadro, logo antes do onClientRender.
  • onClientHUDRender — Disparado uma vez por quadro, depois do onClientRender.