Gw8 Posted June 28, 2017 Posted June 28, 2017 -- * Modo porcentagem * ... -- simples metodo que usa um valor real para ser multiplicado por um valor entre 0 e 1, base para entender o calculo: -- temos uma variavel x cujo valor é 500 -- x = 500, multiplicar x*0 = 0, ou x*1 = 500 e por fim x*0.5 = 250. -- continuando .. calculos para escala sX,sY = guiGetScreenSize() -- valor real em pixels x e y do monitor function resX(value) -- (aspectRatio) return (value/1920)*sX -- calculo baseado na resolucao full hd end function resY(value) -- (aspectRatio) return (value/1080)*sY -- calculo baseado na resolucao full hd end -- calculo de escala do texto fonts = {} function dxFont(i) if not fonts[i] then fonts[i] = dxCreateFont("files/font/font.ttf",resX(index),false,"draft") or "default-bold" -- configure com a sua font end return fonts[i] end -- exemplos de como ser usado dxDrawRectangle(sX*0.2,sY*0.2,resX(200),resY(200),tocolor(255,255,255,255)) dxDrawText("test text",sX*0.2,sY*0.2,sX*0.2+resX(200),sY*0.2+resY(200),tocolor(0,0,0,255),1,dxFont(16),"center","center",true) -- * Calculo normal... + - / -- maioria dos scripts que eu vejo sao assim para -- calcular centro do monitor -- sX/2 ou sY/2, ai acabam tipo fazendo o script naquele tamanho em todas as resolucoes.. -- eu tambem fiz um metodo para calcular isso e fazer ele crescer comforme os tamanhos do sY function fixRes(value) local min_ = math.floor(sY/500) local count = 1 if min_ > 1 then count = count + 0.2*min_ end return value*count end -- calculo de escala do texto fonts = {} function dxFont(i) if not fonts[i] then fonts[i] = dxCreateFont("files/font/font.ttf",fixRes(index),false,"draft") or "default-bold" -- configure com a sua font end return fonts[i] end -- exemplos dxDrawRectangle(sX/2-fixRes(100),sY/2-fixRes(100),fixRes(200),fixRes(200),tocolor(255,255,255,255)) dxDrawText("test text",sX/2-fixRes(100),sY/2-fixRes(100),sX/2+fixRes(100),sY/2+fixRes(100),tocolor(0,0,0,255),1,dxFont(16),"center","center",true) -- espero q tenham entendido como eu uso, fiquem avontade para melhorar o sistema e tambem dar dicas onde devo melhorar Vlw Galera! 1
DNL291 Posted June 29, 2017 Posted June 29, 2017 Os comentários ajudam a entender o código, mas neste caso, acho que seria melhor você deixar toda explicação fora do código - até pra se adequar ao propósito que é um tutorial. Fora que os comentários dentro do código Lua perdem o destaque e não é o ideal pra alguém enxergar. A propósito, vou falar o método que eu uso, que é mais simples, e ajusta o tamanho sem problemas: -- res: 1280 x 800 local sx,sy = guiGetScreenSize() local tamanho_da_fonte = 2.5 local X, Y = 450, 550 local dxWidth = (sx/1280) * (X + 150) local dxHeight = (sy/800) * (Y + 40) local dxScale = ((sx/1280) / (sy/800)) * tamanho_da_fonte dxDrawText( "Teste", (sx/1280)*X, (sy/800)*Y, dxWidth, dxHeight, tocolor(255,255,255), dxScale, "default-bold", "left", "center" ) Eu defini essas variáveis pra deixar mais fácil de entender, mas recomendo poucas variáveis pra uma melhor performance do script sempre. Pra facilitar mais, você pode definir uma variável pra sx/1280 e sy/800 embaixo da função guiGetScreenSize. 1 1 Please do not PM me with scripting related question nor support, use the forums instead.
raynner Posted August 6, 2017 Posted August 6, 2017 On 29/06/2017 at 00:45, DNL291 said: Os comentários ajudam a entender o código, mas neste caso, acho que seria melhor você deixar toda explicação fora do código - até pra se adequar ao propósito que é um tutorial. Fora que os comentários dentro do código Lua perdem o destaque e não é o ideal pra alguém enxergar. A propósito, vou falar o método que eu uso, que é mais simples, e ajusta o tamanho sem problemas: -- res: 1280 x 800 local sx,sy = guiGetScreenSize() local tamanho_da_fonte = 2.5 local X, Y = 450, 550 local dxWidth = (sx/1280) * (X + 150) local dxHeight = (sy/800) * (Y + 40) local dxScale = ((sx/1280) / (sy/800)) * tamanho_da_fonte dxDrawText( "Teste", (sx/1280)*X, (sy/800)*Y, dxWidth, dxHeight, tocolor(255,255,255), dxScale, "default-bold", "left", "center" ) Eu defini essas variáveis pra deixar mais fácil de entender, mas recomendo poucas variáveis pra uma melhor performance do script sempre. Pra facilitar mais, você pode definir uma variável pra sx/1280 e sy/800 embaixo da função guiGetScreenSize. Este é apenas para dxDrawText ? don´t is necessari
DNL291 Posted August 20, 2017 Posted August 20, 2017 (edited) On 06/08/2017 at 13:11, raynner said: Este é apenas para dxDrawText ? Funciona pra qualquer coisa (dxDrawRectangle/dxDrawImage). Se você quer manter a proporção da interface independente da resolução, esse método é útil. Edited August 20, 2017 by DNL291 Please do not PM me with scripting related question nor support, use the forums instead.
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