Jump to content

[Ayuda] DX Relative


aka Blue

Recommended Posts

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

Posted

Uno me dijo por PM en el servidor que le salía el texto en medio de la pantalla, el otro que le salía en la barra de vida... Les dije que cambien de resolución pero es que hasta donde yo sé, no debería.

Posted

La teoria de la relatividad es ancho por uno y viceversa con el alto

screenX * relativeValue (0-1) 

Osea que si tienes

1024x600

Y quieres centrarlo..

(SX-(anchoDX))*0,5 

Y lo mismo con SY

(SY-(altoDX))*0,5 

Posted

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.

Posted
Los dxDrawRectangle dejalos como yo te los pase o modifica el nombre de la funcion de la linea 7

Si mutliplicas X o Y por el relative que tu quieres, automaticamente sale el valor. O almenos, asi lo estuve haciendo todos estes meses

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

Posted

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 ) 

  • Recently Browsing   0 members

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