Jump to content

Como coloco as funções drawHpbar e drawArmour para funcionar no dxDrawRectangle?


Recommended Posts

 
function drawHPBar( x, y, v, d)
    if(v < 0.0) then
        v = 0.0
    elseif(v > 100.0) then
        v = 100.0
    end
dxDrawRectangle(screenW * 0.4870, screenH * 0.4005, screenW * 0.0260, screenH * 0.0046, tocolor(0, 0, 0, 250), false) 
dxDrawRectangle(screenW * 0.4870, screenH * 0.4005, screenW * 0.0260, screenH * 0.0046, tocolor(255, 255, 255, 255), false) --[[VIDA]]
end


function drawArmourBar( x, y, v, d)
    if(v < 0.0) then
        v = 0.0
    elseif(v > 100.0) then
        v = 100.0
    end
dxDrawRectangle(screenW * 0.4870, screenH * 0.4074, screenW * 0.0260, screenH * 0.0046, tocolor(0, 0, 0, 250), false) 		
dxDrawRectangle(screenW * 0.4870, screenH * 0.4074, screenW * 0.0260, screenH * 0.0046, tocolor(100, 224, 0, 250), false) --[[COLETE]]
end

 

Link to comment

então não é bem assim que funciona você tem que fazer assim:
 

local vida = math.floor(getElementHealth(localPlayer))
local coltete = math.floor(getPedArmor(localPlayer))

dxDrawRectangle(x*1, y*1, x*1/100*vida, y*1, tocolor(r, g, b, a), false) -- vai diminur na horizontal
dxDrawRectangle(x*1, y*1, x*1, y*1/100*colte, tocolor(r, g, b, a), false) -- vai diminuir na vertical

o X diminui a barra no sentido do horizonte
ja o Y diminui a barra no sentido vertical

bom se não me engano é assim, pode ta errado também, isso só os mais inteligentes diram...

Link to comment

Amigo, você vai precisar usar a vida e o colete para calcular o tamanho das barras do HUD, é uma matemática simples.

Como você quer um fundo, vamos usar uma largura de valor 200. A largura desse fundo não pode mudar quando o jogador sofrer dano, então temos que fazer um cálculo onde o resultado é sempre 200. Na barra que mostra a vida ou o colete, a largura deve mudar ao sofrer dano, então vamos apenas trocar o 100, que é o valor chave do cálculo, pelo valor da vida/colete do jogador.

local vida = getElementHealth(localPlayer) -- Valor da vida do jogador
local colete = getPedArmor(localPlayer) -- Valor do colete do jogador

dxDrawRectangle(screenW*0.4870, screenH*0.4005, screenW*200/100*100, screenH*0.0046, tocolor(0, 0, 0, 250), false) -- Calculo o fundo da vida, valor máximo é 100.
dxDrawRectangle(screenW*0.4870, screenH*0.4005, screenW*200/100*vida, screenH*0.0046, tocolor(255, 255, 255, 255), false) -- Calculo a barra de vida, substituindo o máximo pelo valor da vida do jogador.

dxDrawRectangle(screenW*0.4870, screenH*0.4074, screenW*200/100*100, screenH*0.0046, tocolor(0, 0, 0, 250), false) -- Calculo o fundo do colete, valor máximo é 100.
dxDrawRectangle(screenW*0.4870, screenH*0.4074, screenW*200/100*colete, screenH*0.0046, tocolor(255, 255, 255, 255), false) -- Calculo a barra de colete, substituindo o máximo pelo valor do colete do jogador.
Link to comment
1 hour ago, Erknneto said:

Amigo, você vai precisar usar a vida e o colete para calcular o tamanho das barras do HUD, é uma matemática simples.

Como você quer um fundo, vamos usar uma largura de valor 200. A largura desse fundo não pode mudar quando o jogador sofrer dano, então temos que fazer um cálculo onde o resultado é sempre 200. Na barra que mostra a vida ou o colete, a largura deve mudar ao sofrer dano, então vamos apenas trocar o 100, que é o valor chave do cálculo, pelo valor da vida/colete do jogador.

local vida = getElementHealth(localPlayer) -- Valor da vida do jogador
local colete = getPedArmor(localPlayer) -- Valor do colete do jogador

dxDrawRectangle(screenW*0.4870, screenH*0.4005, screenW*200/100*100, screenH*0.0046, tocolor(0, 0, 0, 250), false) -- Calculo o fundo da vida, valor máximo é 100.
dxDrawRectangle(screenW*0.4870, screenH*0.4005, screenW*200/100*vida, screenH*0.0046, tocolor(255, 255, 255, 255), false) -- Calculo a barra de vida, substituindo o máximo pelo valor da vida do jogador.

dxDrawRectangle(screenW*0.4870, screenH*0.4074, screenW*200/100*100, screenH*0.0046, tocolor(0, 0, 0, 250), false) -- Calculo o fundo do colete, valor máximo é 100.
dxDrawRectangle(screenW*0.4870, screenH*0.4074, screenW*200/100*colete, screenH*0.0046, tocolor(255, 255, 255, 255), false) -- Calculo a barra de colete, substituindo o máximo pelo valor do colete do jogador.

Muito obrigado vou testar

2 hours ago, SciptNovato said:

então não é bem assim que funciona você tem que fazer assim:
 

local vida = math.floor(getElementHealth(localPlayer))
local coltete = math.floor(getPedArmor(localPlayer))

dxDrawRectangle(x*1, y*1, x*1/100*vida, y*1, tocolor(r, g, b, a), false) -- vai diminur na horizontal
dxDrawRectangle(x*1, y*1, x*1, y*1/100*colte, tocolor(r, g, b, a), false) -- vai diminuir na vertical

o X diminui a barra no sentido do horizonte
ja o Y diminui a barra no sentido vertical

bom se não me engano é assim, pode ta errado também, isso só os mais inteligentes diram...

Obrigado vou testar

Link to comment
2 hours ago, Erknneto said:

Amigo, você vai precisar usar a vida e o colete para calcular o tamanho das barras do HUD, é uma matemática simples.

Como você quer um fundo, vamos usar uma largura de valor 200. A largura desse fundo não pode mudar quando o jogador sofrer dano, então temos que fazer um calculado onde o resultado é sempre 200. Na barra que mostra a vida ou o colete, a largura deve mudar ao sofrer dano, então vamos apenas trocar o 100, que é o valor chave do cálculo, pelo valor da vida/coleta do jogador.



function onClientRender1()
local screenW, screenH = guiGetScreenSize() --[[Ful screen]]

local vida = getElementHealth(localPlayer) -- Valor da vida do jogador
local colete = getPedArmor(localPlayer) -- Valor do colete do jogador

dxDrawRectangle(screenW * 0.4870, screenH * 0.4005, screenW * 0.0260, screenH * 0.0046, tocolor(0, 0, 0, 250), false)--VIDA

dxDrawLine((screenW * 0.4870) - 1, (screenH * 0.4005) - 1, (screenW * 0.4870) - 1, screenH * 0.4051, tocolor(0, 0, 0, 255), 1, false)
dxDrawLine(screenW * 0.5130, (screenH * 0.4005) - 1, (screenW * 0.4870) - 1, (screenH * 0.4005) - 1, tocolor(0, 0, 0, 255), 1, false)
dxDrawLine((screenW * 0.4870) - 1, screenH * 0.4051, screenW * 0.5130, screenH * 0.4051, tocolor(0, 0, 0, 255), 1, false)
dxDrawLine(screenW * 0.5130, screenH * 0.4051, screenW * 0.5130, (screenH * 0.4005) - 1, tocolor(0, 0, 0, 255), 1, false)

dxDrawRectangle(screenW * 0.4870, screenH * 0.4005, screenW * 0.0260 * colete/100, screenH * 0.0046, tocolor(255, 255, 255, 255), false)


dxDrawRectangle(screenW * 0.4870, screenH * 0.4074, screenW * 0.0260, screenH * 0.0046, tocolor(0, 0, 0, 250), false)--COLETE

dxDrawLine((screenW * 0.4870) - 1, (screenH * 0.4074) - 1, (screenW * 0.4870) - 1, screenH * 0.4120, tocolor(0, 0, 0, 255), 1, false)
dxDrawLine(screenW * 0.5130, (screenH * 0.4074) - 1, (screenW * 0.4870) - 1, (screenH * 0.4074) - 1, tocolor(0, 0, 0, 255), 1, false)
dxDrawLine((screenW * 0.4870) - 1, screenH * 0.4120, screenW * 0.5130, screenH * 0.4120, tocolor(0, 0, 0, 255), 1, false)
dxDrawLine(screenW * 0.5130, screenH * 0.4120, screenW * 0.5130, (screenH * 0.4074) - 1, tocolor(0, 0, 0, 255), 1, false)

dxDrawRectangle(screenW * 0.4870, screenH * 0.4074, screenW * 0.0260 * vida/100, screenH * 0.0046, tocolor(100, 224, 0, 250), false)
end

Teria como deixar minha  vida/colete mostrando só para os outros players?spacer.png

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