Jonas^ Posted September 20, 2018 Share Posted September 20, 2018 (edited) Olá pessoal, boa noite, bom eu gostaria saber se tem alguma forma de identificar a resolução dos jogadores e aplicar na label, ou seja, ajustar de acordo com a resolução do player, fiz uma label de exemplo aqui: Código: addEventHandler( "onClientResourceStart", resourceRoot, function() label1 = guiCreateLabel(105, 696, 211, 19, "Teste 1", false) guiSetFont(label1, "default-bold-small") -- label2 = guiCreateLabel(81, 677, 211, 19, "Teste 2", false) guiSetFont(label2, "default-bold-small") end ) Fiz essa label na resolução 1280x720, queria ajustar para todas as resoluções, tem pessoas que usam 800x600 então isso fica desproporcional. Edited September 20, 2018 by OverKILL Link to comment
#DaNiLiN Posted September 20, 2018 Share Posted September 20, 2018 eu acho que a gui é ajustada da mesma forma da dx... eu costumo usar x*, y*, x*, y* Link to comment
Jonas^ Posted September 20, 2018 Author Share Posted September 20, 2018 (edited) 26 minutes ago, danilin said: eu acho que a gui é ajustada da mesma forma da dx... eu costumo usar x*, y*, x*, y* Não, desta forma não funciona. Desta forma da apenas para ajustar em uma resolução, não sei se da pra identificar com essa mesma função a resolução que o jogador esta usando. Ex: local x, y = (screenH/1366), (screenW/768) local screenH, screenW = guiGetScreenSize() addEventHandler( "onClientResourceStart", resourceRoot, function() label1 = guiCreateLabel(x*105, y*696, x*211, y*19, "Teste 1", false) guiSetFont(label1, "default-bold-small") -- label2 = guiCreateLabel(x*81, y*677, x*211, y*19, "Teste 2", false) guiSetFont(label2, "default-bold-small") end ) o que quero fazer é identificar a resolução do jogador e ajustar. Edited September 20, 2018 by OverKILL Link to comment
Other Languages Moderators Lord Henry Posted September 20, 2018 Other Languages Moderators Share Posted September 20, 2018 (edited) Cara, esse negócio de ajustar escala de acordo com a resolução sempre vai bugar. Pois tem resoluções que o Aspect Ratio é 4:3 (800 x 600) e outras que são 16:9 (Padrão Full HD). Prefira fazer os painéis sempre com o mesmo tamanho e ir apenas setando a posição da janela no meio da tela usando a função útil centerWindow. function centerWindow (center_window) local screenW, screenH = guiGetScreenSize() local windowW, windowH = guiGetSize(center_window, false) local x, y = (screenW - windowW) /2,(screenH - windowH) /2 return guiSetPosition(center_window, x, y, false) end addEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), function() theWindow = guiCreateWindow (0, 0, 300, 300, "Janela Qualquer", false) centerWindow (theWindow) guiWindowSetSizable (theWindow, false) label1 = guiCreateLabel(10, 20, 45, 20, "Teste 1", false, theWindow) label1 = guiCreateLabel(10, 40, 45, 20, "Teste 2", false, theWindow) end) Os elementos de texto GUI como os Labels, não possuem escala relativa. O parâmetro relative dele só serve para posição e tamanho do canvas dele. Mas o tamanho da fonte não muda a não ser que use guiCreateFont. Janela teste na resolução nativa de 1366 x 768: Spoiler Janela teste na resolução de 800 x 600: Spoiler Edited September 20, 2018 by Lord Henry 1 Link to comment
Jonas^ Posted September 20, 2018 Author Share Posted September 20, 2018 23 minutes ago, Lord Henry said: Cara, esse negócio de ajustar escala de acordo com a resolução sempre vai bugar. Pois tem resoluções que o Aspect Ratio é 4:3 (800 x 600) e outras que são 16:9 (Padrão Full HD). Prefira fazer os painéis sempre com o mesmo tamanho e ir apenas setando a posição da janela no meio da tela usando a função útil centerWindow. function centerWindow (center_window) local screenW, screenH = guiGetScreenSize() local windowW, windowH = guiGetSize(center_window, false) local x, y = (screenW - windowW) /2,(screenH - windowH) /2 return guiSetPosition(center_window, x, y, false) end addEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), function() theWindow = guiCreateWindow (0, 0, 300, 300, "Janela Qualquer", false) centerWindow (theWindow) guiWindowSetSizable (theWindow, false) label1 = guiCreateLabel(10, 20, 45, 20, "Teste 1", false, theWindow) label1 = guiCreateLabel(10, 40, 45, 20, "Teste 2", false, theWindow) end) Os elementos de texto GUI como os Labels, não possuem escala relativa. O parâmetro relative dele só serve para posição e tamanho do canvas dele. Mas o tamanho da fonte não muda a não ser que use guiCreateFont. Janela teste na resolução nativa de 1366 x 768: Hide contents Janela teste na resolução de 800 x 600: Hide contents Vlw lord, eu imaginava que não iria funcionar direito, eu não sabia dessa função de centralizar no meio da tela vai ser muito útil pra mim. Link to comment
Gw8 Posted September 21, 2018 Share Posted September 21, 2018 fiz esse codigo como exemplo de base, nao quer dizer que ele deve ser seguido: local sX,sY = guiGetScreenSize() local min_Y = math.floor(sY/480) local min_X = math.floor(sX/640) if min_Y <= min_X then g_Scale = min_Y else g_Scale = min_X end local g_Scale = 1 + 0.2*g_Scale function resX(value) return (value*g_Scale) end function resY(value) return (value*g_Scale) end local _dxDrawRectangle = dxDrawRectangle function dxDrawRectangle(x,y,w,h,tocolor,postGui) return _dxDrawRectangle(x,y,resX(w),resY(h),tocolor,postGui) end addEventHandler("onClientRender",root, function() dxDrawRectangle(sX/2-resX(350),sY/2-resY(250),700,500,tocolor(255,255,255,200),false) end ) pense o seguinte o normal do mta é manter a os tamanho para todos os monitores exemplo : dxDrawRectangle(100,100,200,200,tocolor(255,255,255,255),false) sempre manter tudo a x=100,y=100 e assim vai sempre ter os mesmos valores de pixels, mas chegamos ao ponto que agora no inicio voce esta usando uma resolução de 640 px no eixo X, usar 200 px é um bom tamanho, mas se voce usar 200px em um monitor de 1080 px é um retangulo minusculo, e assim chegamos onde eu quero chegar que é a ideia da ESCALA. onde eu PARTICULARMENTE só vejo duas maneira de se fazer com eficacia, um metodo que é por porcentagem exemplo:( que eu nao gosto muito, porque tira a proporção entre as coisas, vc tambem perde qualidade em imagens, etc..) local sX,sY = guiGetScreenSize() dxDrawRectangle(sX*0.2,sY*0.2,sX*0.4,sY*0.6,tocolor(255,255,255,255)) e outro eo primeiro exemplo, que voce trava como resolução minima 640x480 e faz tudo crescer a partir desta resolução. voce tambem consegue usar essa escala para GUI(para escala de textos tenha como referencia apenas o g_Scale). Vlw ai espero ter ajudado. 1 Link to comment
Other Languages Moderators Lord Henry Posted September 21, 2018 Other Languages Moderators Share Posted September 21, 2018 @danilin Ele não pediu nada em DX. Ele só queria saber como alterar proporcionalmente o tamanho da fonte dos Labels (guiCreateLabel). Link to comment
Jonas^ Posted September 21, 2018 Author Share Posted September 21, 2018 30 minutes ago, Gw8 said: fiz esse codigo como exemplo de base, nao quer dizer que ele deve ser seguido: local sX,sY = guiGetScreenSize() local min_Y = math.floor(sY/480) local min_X = math.floor(sX/640) if min_Y <= min_X then g_Scale = min_Y else g_Scale = min_X end local g_Scale = 1 + 0.2*g_Scale function resX(value) return (value*g_Scale) end function resY(value) return (value*g_Scale) end local _dxDrawRectangle = dxDrawRectangle function dxDrawRectangle(x,y,w,h,tocolor,postGui) return _dxDrawRectangle(x,y,resX(w),resY(h),tocolor,postGui) end addEventHandler("onClientRender",root, function() dxDrawRectangle(sX/2-resX(350),sY/2-resY(250),700,500,tocolor(255,255,255,200),false) end ) pense o seguinte o normal do mta é manter a os tamanho para todos os monitores exemplo : dxDrawRectangle(100,100,200,200,tocolor(255,255,255,255),false) sempre manter tudo a x=100,y=100 e assim vai sempre ter os mesmos valores de pixels, mas chegamos ao ponto que agora no inicio voce esta usando uma resolução de 640 px no eixo X, usar 200 px é um bom tamanho, mas se voce usar 200px em um monitor de 1080 px é um retangulo minusculo, e assim chegamos onde eu quero chegar que é a ideia da ESCALA. onde eu PARTICULARMENTE só vejo duas maneira de se fazer com eficacia, um metodo que é por porcentagem exemplo:( que eu nao gosto muito, porque tira a proporção entre as coisas, vc tambem perde qualidade em imagens, etc..) local sX,sY = guiGetScreenSize() dxDrawRectangle(sX*0.2,sY*0.2,sX*0.4,sY*0.6,tocolor(255,255,255,255)) e outro eo primeiro exemplo, que voce trava como resolução minima 640x480 e faz tudo crescer a partir desta resolução. voce tambem consegue usar essa escala para GUI(para escala de textos tenha como referencia apenas o g_Scale). Vlw ai espero ter ajudado. Vlw pela explicação, vai ser útil. Link to comment
#RooTs Posted September 24, 2018 Share Posted September 24, 2018 On 21/09/2018 at 13:40, Lord Henry said: @danilin Ele não pediu nada em DX. Ele só queria saber como alterar proporcionalmente o tamanho da fonte dos Labels (guiCreateLabel). dxDrawRectangle(sX/2-resX(350),sY/2-resY(250),700,500,tocolor(255,255,255,200),false) as posições de DX e GUI são a mesma coisa sX e sY(sX/2-resX(350),sY/2-resY(250),700,500 vai dar no mesmo... já perdeu esse tempo testando ??? pois é!!! eu já.... abraços ai. Link to comment
Other Languages Moderators Lord Henry Posted September 24, 2018 Other Languages Moderators Share Posted September 24, 2018 Então teste lá. Quando conseguir deixar um Label com o tamanho da fonte proporcional na tela, dai me avise. Vocês estão fugindo do assunto do post, que era pra ser escala de Labels (textos) e indo para escala de elementos DX. Uma coisa funciona bem diferente da outra. Os elementos podem sim ser escalonados sem problemas de acordo com a resolução. Mas os textos não. Link to comment
Gw8 Posted September 24, 2018 Share Posted September 24, 2018 isso é meio obvio, voce só consegue escalonar um texto se a fonte for custumizada. tipo https://wiki.multitheftauto.com/wiki/GuiCreateFont myFont = guiCreateFont( "segoeui.ttf", 20*(sy/1080) ) -- Create GUI custom font guiSetFont( myLabel, myFont ) Link to comment
Other Languages Moderators Lord Henry Posted September 24, 2018 Other Languages Moderators Share Posted September 24, 2018 On 20/09/2018 at 11:42, Lord Henry said: [...] Os elementos de texto GUI como os Labels, não possuem escala relativa. O parâmetro relative dele só serve para posição e tamanho do canvas dele. Mas o tamanho da fonte não muda a não ser que use guiCreateFont. [...] Obviamente. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now