Jump to content

dxDrawRectangle widht


aka Blue

Recommended Posts

Posted

Buenas, pues quiero hacer dos rectángulos que indiquen fuerza y resistencia digamos de un jugador. Uno que sea una sombra por así decirlo y el otro, el progreso. Lo que quiero hacer es que cada x tiempo asignado por un setTimer, ese progreso se reduzca y que al usar x comando se rellene.

Me dijeron que se hacía modificando el width o widht. ¿Me podrían dar un ejemplo?.

Salu2.

Posted

es algo muy sencillo te pondre un ejemplo de una barra pero de vida

function dxhealth () 
local health = getElementHealth(localPlayer) 
local maxhealth = 100 
local anchototal = 250 
local anchototal2 = (health*anchototal)/maxhealth  
dxDrawRectangle(100,  200,  anchototal,  20, tocolor(0, 0, 0, 200), false) 
dxDrawRectangle(100,  200,  anchototal2,  20, tocolor(0, 255, 0, 200), false) 
end 

ahora tu quieres de fuerza y resistencia mm como manejas esos dos datos con getElementData o que ?

Posted

Querría que bueno, al pasar x tiempo, se le vaya agotando y le ponga una animación y que al poner un comando, le ponga la resistencia y fuerza al máximo de nuevo.

Posted

algo como esto ? :arrowdown:

  
    local maxResistencia = 100 
    setElementData(localPlayer,"resistencia",maxResistencia) 
  
    setTimer( 
         function ()  
            if resistencia > 0 then 
               local resistencia = getElementData(localPlayer,"resistencia") 
               setElementData(localPlayer,"resistencia", resistencia-1) 
            end 
        end 
    end, 1000,0) 
     
    function addresistencia() 
    setElementData(localPlayer,"resistencia",maxResistencia) 
    end 
    addCommandHandler ( "resistencia", addresistencia ) 
  
    addEventHandler("onClientRender", root 
    function () 
      local resistencia = getElementData(localPlayer,"resistencia") 
      local anchototal = 250 
      local anchototal2 = (resistencia*anchototal)/maxResistencia 
      dxDrawRectangle(100,  200,  anchototal,  20, tocolor(0, 0, 0, 200), false) 
      dxDrawRectangle(100,  200,  anchototal2,  20, tocolor(0, 255, 0, 200), false) 
    end 
    ) 

Posted
¿Se podrían poner los comandos server-side?

si pero lo pones asi

    function addresistencia(player) 
    setElementData(player,"resistencia",100) 
    end 
    addCommandHandler ( "resistencia", addresistencia ) 
  

Posted

Debes poner 2 cuadrados, uno más grande de color negro y el otro de color rojo. El widht es para aumentar o disminuir la altura, según lo que tú quieras.

Mira este video, al lado izquierdo hay una barra como la que tú quieres.

Posted
Debes poner 2 cuadrados, uno más grande de color negro y el otro de color rojo. El widht es para aumentar o disminuir la altura, según lo que tú quieras.

El width es el ancho no el alto.

Posted

Si no entendí mal, sería algo así, ¿me equivoco?

--Server-Side   
  function addresistencia(player) 
    setElementData(player,"resistencia",100) 
    end 
    addCommandHandler ( "resistencia", addresistencia ) 
--Cliente 
 local maxResistencia = 100 
    setElementData(localPlayer,"resistencia",maxResistencia) 
  
    setTimer( 
         function () 
            if resistencia > 0 then 
               local resistencia = getElementData(localPlayer,"resistencia") 
               setElementData(localPlayer,"resistencia", resistencia-1) 
            end 
        end 
    end, 1000,0) 
  
    addEventHandler("onClientRender", root 
    function () 
      local resistencia = getElementData(localPlayer,"resistencia") 
      local anchototal = 250 
      local anchototal2 = (resistencia*anchototal)/maxResistencia 
      dxDrawRectangle(100,  200,  anchototal,  20, tocolor(0, 0, 0, 200), false) 
      dxDrawRectangle(100,  200,  anchototal2,  20, tocolor(0, 255, 0, 200), false) 
    end 
    ) 

Posted
Debes poner 2 cuadrados, uno más grande de color negro y el otro de color rojo. El widht es para aumentar o disminuir la altura, según lo que tú quieras.

El width es el ancho no el alto.

Cierto, debe ser el Height, el que debes tomar.

Posted
Si no entendí mal, sería algo así, ¿me equivoco?
--Server-Side   
  function addresistencia(player) 
    setElementData(player,"resistencia",100) 
    end 
    addCommandHandler ( "resistencia", addresistencia ) 
--Cliente 
 local maxResistencia = 100 
    setElementData(localPlayer,"resistencia",maxResistencia) 
  
    setTimer( 
         function () 
            if resistencia > 0 then 
               local resistencia = getElementData(localPlayer,"resistencia") 
               setElementData(localPlayer,"resistencia", resistencia-1) 
            end 
        end 
    end, 1000,0) 
  
    addEventHandler("onClientRender", root 
    function () 
      local resistencia = getElementData(localPlayer,"resistencia") 
      local anchototal = 250 
      local anchototal2 = (resistencia*anchototal)/maxResistencia 
      dxDrawRectangle(100,  200,  anchototal,  20, tocolor(0, 0, 0, 200), false) 
      dxDrawRectangle(100,  200,  anchototal2,  20, tocolor(0, 255, 0, 200), false) 
    end 
    ) 

Te recomiendo varias cosas:

1) Establece un sistema para aumentar o disminuir la resistencia de tu jugador, eso deberías hacer primero. Y las restricciones que resistencia no puede ser menor que 0 y mayor que 100.

2) Ya luego con ese sistema, puedes obtener tu valor de resistencia.

3) Usa un comando y con su respectiva función, usa un triggerClientEvent, para enviar el dato de resistencia desde server side a client side y directamente al jugador que usa el comando.

4) Con el dato, crea los dos rectangulos, el primero más grande, de color negro, el segundo de color rojo, que quede dentro del primer rectangulo.

5) El height que varíe según "PORCENTAJE", si es 100, entonces el height debe estar en el máximo, si es 0, entonces, debe estar en el mínimo que es 0.

6) El tercer y cuarto Argumento de dxDrawRectangle indica las "profundidades", pero debes usar el Cuarto para el Height, entonces, esto debes utilizar: height * resistencia / 100

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...