Jump to content

[Ayuda] DX Relative


aka Blue

Recommended Posts

Cuando abrí el servidor hoy en la versión "mini-beta" me han dicho que las necesidades se ven raras. Dejo el código pero no entiendo la verdad.
local sx, sy = guiGetScreenSize() 
local screenX = 1024 
local screenY = 768 
local scX, scY = ( 1 / screenX  ), ( 1 / screenY ) 
local _dxDrawRectangle = dxDrawRectangle 
  
function dxDrawRectangle(posX, posY, ancho, largo, ...) 
    local x, y, w, h = sx * ( posX * scX ), sy * ( posY * scY), sx * ( ancho * scX ), sy * ( largo * scY) 
    _dxDrawRectangle(x, y, w, h, ...) 
end 
function mostrarsed () 
    local sed = getElementData(localPlayer,"sed") or 100 
    local anchototal = 120 
    local anchototal2 = (sed*anchototal)/100 
    _dxDrawRectangle( 848, 198, 124, 14, tocolor(0, 0, 0, 255), false) 
    _dxDrawRectangle( 850, 200, anchototal2, 10, tocolor(0, 255, 0, 200), false) 
    dxDrawText("Sed", sx * ( 890 * scX ), sy * ( 184 * scY), sx * ( 845 * scX ), sy * ( 213* scY), tocolor(255, 255, 255, 255), 0.40, "bankgothic", "left", "top", false, false, false, false, false) 
end 
function abrirsed() 
addEventHandler ( "onClientRender", getRootElement(), mostrarsed ) 
end 
addEvent( "onSed", true ) 
addEventHandler( "onSed", getRootElement(), abrirsed ) 

Raras en que sentido? Explícate mejor.

Link to comment

Creo que con esto se solucionara en parte tu problema...

  
local sx, sy = guiGetScreenSize() 
  
function mostrarsed () 
    local sed = getElementData(localPlayer,"sed") or 100 
    local anchototal = 120*(sed/100) 
  
    dxDrawRectangle((848/1024)*sx, (198/768)*sy, (124/1024)*sx, (14/768)*sy, tocolor(0, 0, 0, 255), false) 
    dxDrawRectangle((850/1024)*sx, (200/768)*sy, (120/1024)*sx, (10/768)*sy, tocolor(0, 57, 0, 255), false) 
    dxDrawRectangle((850/1024)*sx, (200/768)*sy, (anchototal/1024)*sx, (10/768)*sy, tocolor(0, 200, 0, 255), false) 
    dxDrawText("Sed", (892/1024)*sx, (200/768)*sy, (925/1024)*sx, (212/768)*sy, tocolor(0, 0, 0, 255), (0.40/1024)*sx, (0.40/768)*sy, "bankgothic", "center", "center", false, false, false, false, false) 
    dxDrawText("Sed", (891/1024)*sx, (199/768)*sy, (924/1024)*sx, (211/768)*sy, tocolor(255, 255, 255, 255), (0.40/1024)*sx, (0.40/768)*sy, "bankgothic", "center", "center", false, false, false, false, false) 
end 
  
function abrirsed() 
    addEventHandler ( "onClientRender", getRootElement(), mostrarsed ) 
end 
addEvent( "onSed", true ) 
addEventHandler( "onSed", getRootElement(), abrirsed ) 
  

Usandolo de esa manera los dx quedaran en la misma posicion en cualquier tipo de resolucion no importa si es muy baja o alta y el el texto tambien se ajusta, pero el problema esta en el HUD el cual si cambia de tamaño segun la resolucion por ejemplo en la resolucion de 1024x768 el HUD queda arriba de la barra de Sed, pero en 1366x768 esta queda encima, te recomendaria ponerla un poco mas abajo o en otro sitio donde no estorbe, eso en caso de que uses el HUD default si usas uno hecho por ti y que use dx podrias usar las mismas variables para que mantenga la misma posicion en cualquier resolucion, bueno espero que te sirva.

Link to comment
Revivo. A la mayoría de los que están en el servidor se les ve bien pero a un usuario hoy, me dijo que se le veía en la barra de dinero.

Eso es un problema que puede pasar.. tu lo que haces con eso es que quede dentro de sus dimensiones de la pantalla, que superponga a otra gui, objeto etc es una posibilidad. Probablemente usa una resolución más pequeña que la tuya.

Link to comment

No entendieron mi codigo anterior pero bueno lo dejo como antes, intenta esto:

local sx, sy = guiGetScreenSize() 
local screenX = 1024 
local screenY = 768 
local scX, scY = ( 1 / screenX  ), ( 1 / screenY ) 
  
function _dxDrawRectangle(posX, posY, ancho, largo, ...) 
    local x, y, w, h = sx * ( posX * scX ), sy * ( posY * scY), sx * ( ancho * scX ), sy * ( largo * scY) 
    dxDrawRectangle(x, y, w, h, ...) 
end 
  
function mostrarsed () 
    local sed = getElementData(localPlayer,"sed") or 100 
    local anchototal = 120 
    local anchototal2 = (sed*anchototal)/100 
    _dxDrawRectangle( 842 , 185,  138,  86, tocolor(0, 0, 0, 90), false) 
    _dxDrawRectangle( 848, 198, 124, 14, tocolor(0, 0, 0, 255), false) 
    _dxDrawRectangle( 850, 200, anchototal, 10, tocolor(0, 0, 0, 90), false) 
    _dxDrawRectangle( 850, 200, anchototal2, 10, tocolor(0, 255, 0, 200), false) 
    _dxDrawText("Sed", sx * ( 890 * scX ), sy * ( 184 * scY), sx * ( 845 * scX ), sy * ( 213* scY), tocolor(255, 255, 255, 255), 0.40, "bankgothic", "left", "top", false, false, false, false, false) 
end 
  
function abrirsed() 
addEventHandler ( "onClientRender", getRootElement(), mostrarsed ) 
end 
addEvent( "onSed", true ) 
addEventHandler( "onSed", getRootElement(), abrirsed ) 

Link to comment
  • Recently Browsing   0 members

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