Marcelo.S

Ajustar resolução

Recommended Posts

function HUD ()

  
        dxDrawLine(448 - 1, 743 - 1, 448 - 1, 764, tocolor(0, 0, 0, 255), 1, false)
        dxDrawLine(850, 743 - 1, 448 - 1, 743 - 1, tocolor(0, 0, 0, 255), 1, false)
        dxDrawLine(448 - 1, 764, 850, 764, tocolor(0, 0, 0, 255), 1, false)
        dxDrawLine(850, 764, 850, 743 - 1, tocolor(0, 0, 0, 255), 1, false)
        dxDrawRectangle(448, 743, 402, 21, tocolor(46, 46, 46, 155), false)
        dxDrawText("", 623, 588, 623, 588, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, false, false, false)
end

addEventHandler("onClientRender", root, HUD)
addEventHandler("onClientResourceStart", resourceRoot,
    function()
	for id, hudComponents in ipairs(hudTable) do
		showPlayerHudComponent(hudComponents, false)
	end
    end
)

addEventHandler("onClientResourceStop", resourceRoot,
    function()
	for id, hudComponents in ipairs(hudTable) do
		showPlayerHudComponent(hudComponents, true)
	end
    end
)

Criei esse Dx pra mandar algumas informações na tela, fiz na resolução 1366x768. O pessoal com resolução diferente tá ficando torto teria como por pra ajustar em todas resoluções?

Share this post


Link to post
Posted (edited)

Cadê a hudTable?

Está ficando torto comparado ao quê? Posição do HUD original?

Além disso você não está trabalhando com a resolução do jogador. Isso significa que a posição dos dxDraw sempre vai ser diferente nas outras resoluções.

Edited by Lord Henry

Share this post


Link to post

dxDrawRectangle era pra ficar centralizado na parte inferior da tela, pra quem ta na resolução 1366x768 fica, mais quem te em resolução diferente não fica

Share this post


Link to post

Acabei de testar seu código na resolução 1366x768 e sem alterar nada. Ele já não está centralizado em X.

Seu texto também não está dentro do dxDrawRectangle.

Share this post


Link to post

E quando muda resolução fica mais torto ainda poderia me ajudar e no texto também é que não entendo muito.

Share this post


Link to post

Pra começar vc deveria usar guiGetScreenSize para obter a resolução do jogador. Depois sabendo disso, vc posiciona usando o tamanho da tela como base no cálculo.

E também não faz sentido esse tamanho que vc está usando no retângulo. Por quê o tamanho x = 402, y = 21?

Share this post


Link to post
Posted (edited)
local x, y = guiGetScreenSize () -- Obtém a resolução do jogador, no meu caso x = 1366 e y = 768

function HUD ()
	dxDrawLine (x/2 - 240, y - 25, x/2 - 240, y - 5, tocolor(0, 0, 0, 255)) -- Linha da esquerda
	dxDrawLine (x/2 - 240, y - 25, x/2 + 240, y - 25, tocolor(0, 0, 0, 255)) -- Linha superior
	dxDrawLine (x/2 - 240, y - 5, x/2 + 240, y - 5, tocolor(0, 0, 0, 255)) -- Linha inferior
	dxDrawLine (x/2 + 240, y - 25, x/2 + 240, y - 5, tocolor(0, 0, 0, 255)) -- Linha da direita
	dxDrawRectangle (x/2 - 240, y - 25, 480, 20, tocolor(46, 46, 46, 155)) -- Retângulo centralizado horizontalmente na tela.
	dxDrawText ("TESTANDO MENSAGEM COM LETRAS MAIÚSCULAS e também com letras minúsculas.", x/2 - 240, y - 25, x/2 + 240, y - 5, tocolor(255, 255, 255, 255), 1, "default", "center", "center", true) -- Texto centralizado no retângulo.
end
addEventHandler ("onClientRender", root, HUD)

 

Edited by Lord Henry

Share this post


Link to post
local x, y = guiGetScreenSize () -- Obtém a resolução do jogador, no meu caso x = 1366 e y = 768

function HUD ()
	dxDrawLine (x/2 - 240, y - 25, x/2 - 240, y - 5, tocolor(0, 0, 0, 255)) -- Linha da esquerda
	dxDrawLine (x/2 - 240, y - 25, x/2 + 240, y - 25, tocolor(0, 0, 0, 255)) -- Linha superior
	dxDrawLine (x/2 - 240, y - 5, x/2 + 240, y - 5, tocolor(0, 0, 0, 255)) -- Linha inferior
	dxDrawLine (x/2 + 240, y - 25, x/2 + 240, y - 5, tocolor(0, 0, 0, 255)) -- Linha da direita
	dxDrawRectangle (x/2 - 240, y - 25, 480, 20, tocolor(46, 46, 46, 155)) -- Retângulo centralizado horizontalmente na tela.
	dxDrawText (' [INFO]: '..MensagensInfo[cont], x/2 - 240, y - 25, x/2 + 240, y - 5, tocolor(255, 255, 255, 255), 1, "default", "center", "center", true) -- Texto centralizado no retângulo.
end
addEventHandler ("onClientRender", root, HUD)


tMensagems = 1 
cont = 1
MensagensInfo = {
	"Falta 10 Minutos para acabar o Roud.",
	"Falta 9 Minutos para acabar o Roud.",
	"Falta 8 Minutos para acabar o Roud.",
	"Falta 7 Minutos para acabar o Roud.",
	"Falta 6 Minutos para acabar o Roud.",
	"Falta 5 Minutos para acabar o Roud.",
	"Falta 4 Minutos para acabar o Roud.",
	"Falta 3 Minutos para acabar o Roud.",
	"Falta 2 Minutos para acabar o Roud.",
	"Falta 1 Minutos para acabar o Roud.",
	"Roud Finalizado. X1 de Costas Será iniciado!",
}

setTimer(function ( )
	cont = cont +1
end, tMensagems * 60000 , 0)

Estou usando o script como você pode ver acima, pra informar quantos minutos faltar pra acabar, funciona tudo bem mais por exemplo se tiver em 9 minutos e o player relogar volta pra 10 Minutos somente pra ele, pra os outros continua apartir dos 9 minutos. 
Já alterei o onClientRender para onResourceStart , mais não aparece nada na tela quando faço isso.

Share this post


Link to post

O certo é "round" e não "Roud".

Sobre o tempo reiniciar, para manter o tempo de todo mundo igual, faça ele server-side.

Share this post


Link to post

O timer do round deve ser no lado server, pois no cliente é como se você tivesse definindo vários timers individualmente (para cada jogador).

O que deve ser feito além disso, é fazer triggerServerEvent > triggerClientEvent ou onPlayerLogin > triggerClientEvent, passando o tempo restante, e chamar o evento no cliente.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.