Jump to content

DX timer e centralizar


Recommended Posts

Podem me ajudar a centralizar e fazer ficar aparecendo por 20 segundos ( e possível redimensionar para todas as resoluções ? )


function DxCompleteMissons()
        dxDrawRectangle(0, 305, 1360, 162, tocolor(0, 0, 0, 239), false)
        dxDrawText(" Mission Complete !", 209, 319, 1151, 467, tocolor(254, 5, 5, 254), 5.00, "beckett", "left", "top", false, false, false, false, false)
end
addEventHandler("onClientRender", root, DxCompleteMissons )

Acho q para desativar apos 20 segundos devo usar um remove eventhandler com SetTimer porem não tenho certeza mas não sei como centralizar na tela tipo 

 

 COM A MESMA DISTANCIA AQUI     

                                                                                                                                                                                                                                                                                                             
 

Mission complete

                                                                                                                                                                                                                                                                                                            

 COM A MESMA DISTANCIA AQUI TMB

Edited by kevincouto6
Link to comment

Pra ficar centralizado corretamente você deve seguir esse Exemplo.

local screenW,screenH = guiGetScreenSize()
local resW,resH = 1366,768
local x,y =  (screenW/resW), (screenH/resH)

function Dx ()
  	dxDrawRectangle(x*395, y*210, x*577, y*330, tocolor(210, 210, 210, 255), false)
end

Com o calculo nas 3 Primeiras linhas faz que funcione pra maioria das resolução, se a resolução for muito baixa dai fica centralizado porém fico minusculo. Em fontes criadas pelo dxCreateFont acontece de dar erro (Não sei porquê) a fonte não se centraliza.
 

Para que o Dx Sumir você deve utilizar um setTimer, porém recomendo utilizar dentro da função que faz o dx abrir. Aqui vai um Exemplo.

function Dx ()
  	dxDrawRectangle(x*395, y*210, x*577, y*330, tocolor(210, 210, 210, 255), false)
end

function Fim_Mission ()
    addEventHandler("onClientRender", root, Dx) -- Adiciona um evento "onClientRender" na função onde está localizado seu DX
    setTimer(function()
	    removeEventHandler("onClientRender", root, Dx) -- Remove o evento "onClientRender" na função onde está localizado seu DX
    end, 10000, 1) -- Tudo Acima irá acontecer em 10 segundos
end
addCommandHandler("teste", Fim_Mission)

 

Edited by #DaNiLiN
  • Thanks 1
Link to comment
8 hours ago, #DaNiLiN said:

 

então estava testando e funcionou no (dxDrawRetangle), pelo que entendi não é possivel  redimensionar o texto, então existe outra forma de fazer ? nos testes com o quadro funcionou mas não com o texto,

local screenW,screenH = guiGetScreenSize()
local resW,resH = 1366,768
local x,y =  (screenW/resW), (screenH/resH)

function Dx ()
  	dxDrawRectangle(x*0, y*315, x*1366, y*192, tocolor(0, 0, 0, 239), false)
	dxDrawText(" Mission Complete !", x*209, y*320, x*1151, y*188, tocolor(254, 5, 5, 254), 5.00, "beckett", "left", "top", false, false, false, false, false)
end

function Fim_Mission ()
    addEventHandler("onClientRender", root, Dx)
    setTimer(function()
	    removeEventHandler("onClientRender", root, Dx) 
    end, 10000, 1)
end
addCommandHandler("teste", Fim_Mission)

Imagem de como ficou

2guwcgk.png

O erro do debug ja foi resolvido "so pra avisar" :) 

Edited by kevincouto6
Link to comment
47 minutes ago, Lord Henry said:

Olá.

Já tentou redimensionar o texto pelo parâmetro scale dele?

Como lord disse você tem que redimensionar a escala do texto, caso não saiba oque é e onde fica ai vai um exemplo.

	dxDrawText(" Mission Complete !", x*, y*, x*, y*, tocolor(254, 5, 5, 254), x*scale, "beckett", "left", "top", false, false, false, false, false)

 

Link to comment

Olá obgd pela ajuda, funcionou porem use apenas (x)* 5, quando eu usava ( x / y  )*5, ficava muito grande na resolução 640/480, então use assim

local screenW,screenH = guiGetScreenSize()
local resW,resH = 1366,768
local x,y =  (screenW/resW), (screenH/resH)

function Dx ()
  	dxDrawRectangle(x*0, y*315, x*1366, y*150, tocolor(0, 0, 0, 239), false)
	dxDrawText(" ## Mission Complete ! ##", x*0, y*320, x*1366, y*150, tocolor(254, 5, 5, 254), (x)*5, "beckett", "left", "top", false, false, false, false, false)
end

function Fim_Mission ()
    addEventHandler("onClientRender", root, Dx)
    setTimer(function()
	    removeEventHandler("onClientRender", root, Dx) 
    end, 10000, 1)
end
addCommandHandler("teste", Fim_Mission) 

                        1366 / 768                                                              640 / 480

2r55npz.png  o8wjrb.png

 

Queria apenas uma ultima opnião se esta tudo correto

Edited by kevincouto6
Link to comment

Aproveitando o Tópico surgiu uma dúvida.
 Porquê quando eu crio uma fonte pelo dxCreateFont e mesmo rendimensionando ela ainda continua bugando pra outras resolução?

5 minutes ago, kevincouto6 said:

Olá obgd pela ajuda, funcionou porem use apenas (x)* 5, quando eu usava ( x / y  )*5, ficava muito grande na resolução 640/480, então use assim


local screenW,screenH = guiGetScreenSize()
local resW,resH = 1366,768
local x,y =  (screenW/resW), (screenH/resH)

function Dx ()
  	dxDrawRectangle(x*0, y*315, x*1366, y*150, tocolor(0, 0, 0, 239), false)
	dxDrawText(" ## Mission Complete ! ##", x*0, y*320, x*1366, y*150, tocolor(254, 5, 5, 254), (x)*5, "beckett", "left", "top", false, false, false, false, false)
end

function Fim_Mission ()
    addEventHandler("onClientRender", root, Dx)
    setTimer(function()
	    removeEventHandler("onClientRender", root, Dx) 
    end, 10000, 1)
end
addCommandHandler("teste", Fim_Mission) 

                        1366 / 768                                                              640 / 480

2r55npz.png  o8wjrb.png

O Certo é usar apenas o x mesmo

Edit#1
@kevincouto6 Não é necessário adicionar o x em parênteses

Edited by #DaNiLiN
Link to comment

@#DaNiLiN Já tentou fazer uma verificação para cada tela, e definir um valo a size tipo assim

if guiGetScreenSize() = ( 1366 , 768 ) then
  	size = 5
else
	if guiGetScreenSize() = ( 1280 , 768 ) then
		size = 4.7
	else
		if guiGetScreenSize() = ( 1280 , 720 ) then
			size = 4.4
		else
			if guiGetScreenSize() = ( 1280 , 600 ) then
				size = 4.1
			else
				if guiGetScreenSize() = ( 1024 , 768 ) then
					size = 3.8
				else
					if guiGetScreenSize() = ( 800 , 600 ) then
						size = 3.5
					else
						if guiGetScreenSize() = ( 656 , 496 ) then
							size = 3.2
						else
							if guiGetScreenSize() = ( 640 , 480 ) then
								size = 2.9
							else
								size = 5
							end
						end
					end
				end
			end
		end
	end
end

Assim depois basta usar, o valor de size, obs: não sei se é o jeito correto, mas acho que vale apena tentar


clear = dxCreateFont( "segoeui.ttf", size )
  
dxDrawText("Test Text", x*0.4,y*0.65,x,y,tocolor(255,255,255,255), size, clear,"left","top",false,false,true,true,true) 
  
Link to comment

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.
×
×
  • Create New...