Jump to content

[Ajuda] Texto sobre Imagem


Recommended Posts

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

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

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 :wink:

Link to comment

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
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

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

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...