FelipeMallmann Posted May 13, 2015 Share Posted May 13, 2015 Olá, gostaria de saber como faço para criar uma imagem fixa na tela do jogo, porem, com texto encima dela. Estou usando uma resource que verifica a arma do player e exibe o texto na tela, dizendo qual arma é. Mas quero modificar isso, colocar uma imagem de fundo, fazendo então o texto com o nome da arma aparecer sobre essa imagem. Codigo da resource: if ( arma==31 ) then element1 = dxDrawText(" M4 ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==0 ) then element1 = dxDrawText(" Punho ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.988, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==30 ) then destroyElement(element1)element1 = dxDrawText(" AK-47 ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==27 ) then destroyElement(element1)element1 = dxDrawText(" Combat Shotgun ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==28 ) then destroyElement(element1)element1 = dxDrawText(" TEC ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==29 ) then destroyElement(element1)element1 = dxDrawText(" MP5 ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==26 ) then destroyElement(element1)element1 = dxDrawText(" SAWN-OFF ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==25 ) then destroyElement(element1)element1 = dxDrawText(" Shotgun ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==24 ) then destroyElement(element1)element1 = dxDrawText(" Desert Eagle ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==23 ) then destroyElement(element1)element1 = dxDrawText(" Taser ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==22 ) then destroyElement(element1)element1 = dxDrawText(" Pistola ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==8 ) then destroyElement(element1)element1 = dxDrawText(" Katana ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==6 ) then destroyElement(element1)element1 = dxDrawText(" Placa ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==4 ) then destroyElement(element1)element1 = dxDrawText(" Knife ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==5 ) then destroyElement(element1)element1 = dxDrawText(" Baseball Bat ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==2 ) then destroyElement(element1)element1 = dxDrawText(" Golf Club ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==33 ) then destroyElement(element1)element1 = dxDrawText(" Rifle ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==34 ) then destroyElement(element1)element1 = dxDrawText(" Sniper ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==16 ) then destroyElement(element1)element1 = dxDrawText(" Grenade ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false)end if ( arma==17 ) then destroyElement(element1)element1 = dxDrawText(" Tear Gas ", screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false) Eu estava tentando criar um: guiCreateStaticImage( 1060, 6, 220, 100, "weapom.png", false ) Porem a imagem se sobrepoe aos textos. Como arrumar isso? @EDIT Outra coisa que percebi é que quando eu coloco essa imagem no jogo, fica tudo travado, como se fosse queda de fps, o que pode ser? Obrigado Link to comment
DNL291 Posted May 13, 2015 Share Posted May 13, 2015 Use dxDrawImage. Quanto à queda de FPS, presumo que tenha sido o uso da função guiCreateStaticImage no evento onClientRender. Link to comment
n3wage Posted May 13, 2015 Share Posted May 13, 2015 Você não pode usar guiCreateStaticImage em um evento render, isso ira criar varias imagens (umas 5+ por segundo ?) infinitamente, use dxDrawImage. Tambem não é necessario (e n funciona) usar destroyElement em dxDrawText's, Já que a função retorna apenas true or false, e não um elemento. E dá pra otimizar seu código: Armas = { [31] = "M4", [0] = "Punho", [30] = "AK-47", [27] = "Combat Shotgun", [28] = "TEC", [29] = "MP5", [26] = "SAWN-OFF", [25] = "Shotgun", [24] = "Desert Eagle", [23] = "Taser", [22] = "Pistola", [8] = "Katana", [6] = "Placa", [4] = "Knife", [5] = "Baseball Bat", [2] = "Golf Club", [33] = "Rifle", [34] = "Sniper", [16] = "Grenade", [17] = "Tear Gas" } local arma = getPedWeapon ( localPlayer ) if Armas[arma] then dxDrawText(Armas[arma], screenWidth*0.860, screenHeight*0.024, screenWidth*0.978, screenHeight*0.59, tocolor(23, 112, 31, 255), 1.50, "sans", "left", "top", false, false, false, false, false) end Link to comment
#RooTs Posted May 14, 2015 Share Posted May 14, 2015 Seria mais viável usar dxDrawImage -- imagem na linha 01 para ficar atras do texto dxDrawText -- texto na linha 02 para ficar na frente na imagem se inverter isto vai ficar ao contrário, imagem na frente e texto atrás Link to comment
FelipeMallmann Posted May 14, 2015 Author Share Posted May 14, 2015 Hmm entendi! Obrigado DNL291, n3wage e #RooTs!! Mas to com uma duvida, tem como fazer dxDrawImage usando posições pequenas, por exemplo dxDrawImage (815, 10, 220, 80, "weapom.png") Esse é o que estou usando, mas queria fazer assim dxDrawImage (0.05, 0.10, 0.8, 0.06, "weapom.png") Ou seja, com valores entre 0 e 1, para poder usar o esquema de multiplicar pela resoluçao da pessoa. Obrigado Link to comment
#RooTs Posted May 14, 2015 Share Posted May 14, 2015 da uma lida neste tópico, que você vai entender um pouco mais sobre os "DX"; caso tenha duvida com o tamanho da imagem na tela, sinta-se livre para continuar sobre este assunto viewtopic.php?f=151&t=85698 Link to comment
DNL291 Posted May 15, 2015 Share Posted May 15, 2015 Hmm entendi! Obrigado DNL291, n3wage e #RooTs!!Mas to com uma duvida, tem como fazer dxDrawImage usando posições pequenas, por exemplo dxDrawImage (815, 10, 220, 80, "weapom.png") Esse é o que estou usando, mas queria fazer assim dxDrawImage (0.05, 0.10, 0.8, 0.06, "weapom.png") Ou seja, com valores entre 0 e 1, para poder usar o esquema de multiplicar pela resoluçao da pessoa. Obrigado Você quer dizer posições relativas. Mas essa função não suporta esses valores, então respondendo sua pergunta, não tem como. Se quiser converter absolutos para relativos, faça o seguinte: Divida a posição X pela largura da tela (1º argumento de guiGetScreenSize()). E o mesmo com a posição Y dividindo pela altura da tela. Código: local screenW, screenH = guiGetScreenSize() local relX = X / screenW local relY = Y / screenH Link to comment
#RooTs Posted May 16, 2015 Share Posted May 16, 2015 mesma coisa que citei em meu TUTO, só que ele não leu Link to comment
DNL291 Posted May 16, 2015 Share Posted May 16, 2015 Você não explicou esse ponto, sobre relativos, aqui. Só deixou o link do seu tutorial. Por isso que eu expliquei; e não acho que é a mesma coisa que você citou. De qualquer modo, como eu já disse, não vai funcionar com a função que ele tá tentando. Na própria página da função diz que é um argumento do tipo absoluto. 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