kevincouto6 Posted February 11, 2019 Share Posted February 11, 2019 (edited) 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 February 11, 2019 by kevincouto6 Link to comment
#DaNiLiN Posted February 11, 2019 Share Posted February 11, 2019 (edited) 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 February 11, 2019 by #DaNiLiN 1 Link to comment
kevincouto6 Posted February 12, 2019 Author Share Posted February 12, 2019 (edited) 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 O erro do debug ja foi resolvido "so pra avisar" Edited February 12, 2019 by kevincouto6 Link to comment
Other Languages Moderators Lord Henry Posted February 12, 2019 Other Languages Moderators Share Posted February 12, 2019 (edited) Olá. Já tentou redimensionar o texto pelo parâmetro scale dele? Edited February 12, 2019 by Lord Henry Link to comment
#DaNiLiN Posted February 12, 2019 Share Posted February 12, 2019 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
kevincouto6 Posted February 12, 2019 Author Share Posted February 12, 2019 (edited) 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 Queria apenas uma ultima opnião se esta tudo correto Edited February 12, 2019 by kevincouto6 Link to comment
#DaNiLiN Posted February 12, 2019 Share Posted February 12, 2019 (edited) 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 O Certo é usar apenas o x mesmoEdit#1@kevincouto6 Não é necessário adicionar o x em parênteses Edited February 12, 2019 by #DaNiLiN Link to comment
kevincouto6 Posted February 12, 2019 Author Share Posted February 12, 2019 Porém voçê usa no size, tipo assim clear = dxCreateFont( "segoeui.ttf", (x)*20 ) dxDrawText("Test Text", x*0.4,y*0.65,x,y,tocolor(255,255,255,255),1,clear,"left","top",false,false,true,true,true) Link to comment
#DaNiLiN Posted February 12, 2019 Share Posted February 12, 2019 clear = dxCreateFont( "segoeui.ttf", x*20 ) dxDrawText("Test Text", x*0.4,y*0.65,x,y,tocolor(255,255,255,255), x*1, clear,"left","top",false,false,true,true,true) Eu utilizo da forma acima e mesmo assim buga... Link to comment
kevincouto6 Posted February 12, 2019 Author Share Posted February 12, 2019 @#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
#DaNiLiN Posted February 12, 2019 Share Posted February 12, 2019 Caramba, Bem pensado Problema que terei que entrar em cada resolução pra testar Link to comment
Other Languages Moderators Lord Henry Posted February 12, 2019 Other Languages Moderators Share Posted February 12, 2019 É inviável ficar fazendo condição pra cada resolução. Link to comment
Other Languages Moderators androksi Posted February 12, 2019 Other Languages Moderators Share Posted February 12, 2019 O certo é "y*" no parâmetro de tamanho da fonte. Link to comment
#DaNiLiN Posted February 12, 2019 Share Posted February 12, 2019 59 minutes ago, asrzk said: O certo é "y*" no parâmetro de tamanho da fonte. Ata... Eu sempre usei x e bugava.. 1 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