Jump to content

[DX] Problema


AlFA#

Recommended Posts

Buenas, tengo un problema con mi login, me explico; Lo que me gustaría hacer es que el editbox, sea transparente pero al escribir este no se haga invisible tambien.

Por favor ayudarme.

  
addEventHandler("onClientResourceStart", resourceRoot, 
    function() 
        username = guiCreateEdit(389, 347, 237, 36, "", false) 
        guiSetAlpha(username, 0.86) 
         
        password = guiCreateEdit(389, 407, 237, 36, "", false) 
        guiEditSetMasked(password, true)     
    end 
) 
  

Link to comment

Buenas, tengo un problema con mi login, me explico; Lo que me gustaría hacer es que el editbox, sea transparente pero al escribir este no se haga invisible tambien.

Por favor ayudarme.

  
addEventHandler("onClientResourceStart", resourceRoot, 
    function() 
        username = guiCreateEdit(389, 347, 237, 36, "", false) 
        guiSetAlpha(username, 0.86) 
         
        password = guiCreateEdit(389, 407, 237, 36, "", false) 
        guiEditSetMasked(password, true)     
    end 
) 
  

Usa onClientGUIChanged para cuando el EditBox sea editado, luego usas guiSetAlpha para la transparencia.

Link to comment

Buenas, tengo un problema con mi login, me explico; Lo que me gustaría hacer es que el editbox, sea transparente pero al escribir este no se haga invisible tambien.

Por favor ayudarme.

  
addEventHandler("onClientResourceStart", resourceRoot, 
    function() 
        username = guiCreateEdit(389, 347, 237, 36, "", false) 
        guiSetAlpha(username, 0.86) 
         
        password = guiCreateEdit(389, 407, 237, 36, "", false) 
        guiEditSetMasked(password, true)     
    end 
) 
  

Usa onClientGUIChanged para cuando el EditBox sea editado, luego usas guiSetAlpha para la transparencia.

Gracias por responder, pero no me he funcionado sigue haciéndose invisible todo, yo quiero que las letras se vean normal, pero el fondo del guiCreateEdit se ponga transparente.

Link to comment
creo que no es posible

vas a tener que usar un dxDrawText encima del editbox

¿Me puedes explicar un poco más? Soy nuevo con esto de dx.

Gracias por responder.

La opción que te dijo alex17 es que con dxDraw puedas hacer un estilo de edit, me he tomado la molestia de hacer este código para que entiendas un poco de lo que consiste.

local dxText = "" 
  
addEventHandler("onClientResourceStart", resourceRoot, function() 
   editBox = guiCreateEdit(...); 
   guiSetAlpha(editBox, 0); 
end) 
  
addEventHandler("onClientRender", root, function() 
    dxDrawRectangle(...); 
    dxDrawText(dxText, ...); 
    -- el tamaño del texto y del rectangulo deben de coincidir con las del Edit. 
end) 
  
addEventHandler("onClientGUIChanged", root, function() 
    if ( source == editBox ) then 
        local texto = guiGetText(editBox ); 
        dxText = texto; 
    end 
end) 

Edited by Guest
Link to comment
creo que no es posible

vas a tener que usar un dxDrawText encima del editbox

¿Me puedes explicar un poco más? Soy nuevo con esto de dx.

Gracias por responder.

La opción que te dijo alex17 es que con dxDraw puedas hacer un estilo de edit, me he tomado la molestia de hacer este código para que entiendas un poco de lo que consiste.

local dxText = "" 
  
addEventHandler("onClientResourceStart", resourceRoot, function() 
   editBox = guiCreateEdit(...); 
   guiSetAlpha(editBox, 0); 
end) 
  
addEventHandler("onClientRender", root, function() 
    dxDrawRectangle(...); 
    dxDrawText(dxText, ...); 
    -- el tamaño del texto y del rectangulo deben de coincidir con las del Edit. 
end) 
  
addEventHandler("onClientGUIChanged", root, function() 
    if ( source == editBox ) then 
        local texto = guiGetText(); 
        dxText = texto; 
    end 
end) 

Te faltó especificar el GUI-Element en la línea 16.

Link to comment

Antes que nada, gracias por responder a ambos, pero mi problema sigue igual! :?

Crea el rectangulo y el editbox, pero el texto cuando escribo no se ve...

local dxText = "Usuario" 
  
addEventHandler("onClientResourceStart", resourceRoot, function() 
   editBox = guiCreateEdit(389, 347, 237, 36, "", false) 
   guiSetAlpha(editBox, 0); 
end) 
  
addEventHandler("onClientRender", root, function() 
    dxDrawRectangle(389, 347, 237, 36); 
    dxDrawText(dxText, 389, 347, 237, 36); 
    -- el tamaño del texto y del rectangulo deben de coincidir con las del Edit. 
end) 
  
addEventHandler("onClientGUIChanged", root, function() 
    if ( source == editBox ) then 
        local texto = guiGetText(editBox ); 
        dxText = texto; 
    end 
end) 
  
--Funcion vieja!!! 
  
--addEventHandler("onClientResourceStart", resourceRoot, 
  
    --function() 
        --username = guiCreateEdit(389, 347, 237, 36, "", false) 
        --guiSetAlpha(username, 0.60) 
         
        --showChat(false) 
         
        --password = guiCreateEdit(389, 407, 237, 36, "", false) 
        --guiSetAlpha(password, 0.60) 
        --guiEditSetMasked(password, true)     
   -- end 
--) 
  
addEventHandler("onClientRender", root, 
    function() 
        --dxDrawImage(0, 136, 1024, 657, "imagenes/Login _Cuadro.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) 
        dxDrawImage(341, 439, 330, 94, "imagenes/Login_Buttom.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) 
        dxDrawImage(395, 0, 0, 768, "imagenes/Register_Buttom.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) 
        dxDrawImage(341, 510, 330, 97, "imagenes/Register_Buttom.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) 
        dxDrawImage(0, -34, 1024, 180, "imagenes/logo.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) 
        --dxDrawText("", 419, 279, 596, 327, tocolor(0, 0, 0, 177), 2.00, "clear", "center", "center", false, false, false, false, false) 
    end 
) 

Edit: Aprovecho este post para ver si alguien me puede explicar un poco como va esta funcion smoothMoveCamera nunca la he usado, y lo de la wiki no lo entiendo muy bien.

Se que sirve para mover la camera de un lugar a otro, pero no la entiendo, gracias de antemano.

Link to comment

Aquí te dejo mi dxEdit de mi librería personal no estoy seguro de si funciona al 100% separado de ella entera pero si falla algo avísame jeje

local sX, sY = guiGetScreenSize() 
local event = false 
local edits = {} 
  
function drawCompontentes() 
    for i, data in ipairs(edits) do 
        if data.active == false then 
            dxDrawEdit(data.x, data.y, data.w, 32, data.text, data.empty) 
        else 
            dxDrawEdit(data.x, data.y, data.w, 32, data.text, false) 
        end 
        if getKeyState("mouse1") then 
            if isCursorHover(data.x, data.y, data.w, 32) then 
                data.active = true 
            else 
                data.active = false 
            end 
        end 
        if data.tick > 0 and getKeyState("backspace") then 
            if data.bfase == 0 and (getTickCount() - data.tick > 500) then 
                data.text = string.sub(data.text,1,string.len(data.text)-1) 
                data.tick = getTickCount() 
                data.bfase = 1 
            elseif data.bfase == 1 and (getTickCount() - data.tick > 50) then 
                data.text = string.sub(data.text,1,string.len(data.text)-1) 
                data.tick = getTickCount()           
            end 
        end 
        if data.active then 
            local textEnd = (dxGetTextWidth ( data.text, 0.5, getMainFont() ) + 3) > data.w and (data.w) or dxGetTextWidth ( data.text, 0.5, getMainFont() ) + 3 
            dxDrawLine(data.x + textEnd, data.y + 1, data.x + textEnd, data.y + 30,tocolor(0,0,0,255),1) 
        end 
        edits[k] = data 
    end 
end 
  
  
function dxCreateEdit(x, y, w, h, text, empty) 
    if x and y and w and h then 
        local edit = createElement ( "dxEdit" ) 
        if edit then 
            local data = {} 
            data.x = x 
            data.y = y 
            data.w = w 
            data.h = h 
            data.text = text or "" 
            data.active = false 
            data.tick = 0 
            data.bfase = 0 
            data.hover = false 
            data.empty = empty or "" 
            data.img = img or false 
             
            edits[edit] = data 
            if not event then 
                addEventHandler("onClientRender", root, drawCompontentes) 
                addEventHandler("onClientCharacter", getRootElement(), updateEdits) 
                event = true 
            end 
            return edit 
        else 
            outputDebugString("dxLib: Can't create the element.") 
        end 
    else 
        outputDebugString("dxLib: Wrong arguments defined on dxEdit.") 
    end 
    return false 
end 
  
  
function dxDrawEdit(x, y, w, h, text, empty) 
    --local color = c and {230, 230, 230} or {200, 200, 200} 
    dxDrawRectangle ( x, y, w, 32 tocolor (150, 150, 150, 255) ) 
    --shodow(x, y, w, h, {1, 1, 1, 1}, {0, 0, 0}) 
    if dxGetTextWidth ( text, 0.5, getMainFont() ) > w then 
        alignX = "right" 
    else 
        alignX = "left" 
    end 
    dxDrawText( text or "", x + 2, y, w - 2 + x, y + 32, tocolor(0,0,0,255), 0.5, getMainFont(), alignX, "center", true, false ) 
     
    if #text == 0 and empty then 
        dxDrawText( empty, x + 2, y, w - 2 + x, y + 32, tocolor(0,0,0,255), 0.5, getMainFont(), alignX, "center", true, false ) 
    end 
end 
  
  
function dxDestroyed() 
    if getElementType(source) == "dxEdit" then 
        edits[source] = nil 
        if #getElementsByType("dxEdit") - 1 <= 0 then 
            removeEventHandler("onClientRender", root, drawCompontentes) 
            removeEventHandler("onClientCharacter", getRootElement(), updateEdits) 
            event = false 
        end 
    end 
end 
addEventHandler("onClientElementDestroy", root, dxDestroyed) 
  
function updateEdits(character) 
    for i,k in pairs(edits) do 
        local data = k 
        if data.active then 
            data.text = data.text..""..character 
            edits[i] = data 
        end 
    end 
end 
  
function updateEditsKey(button, press) 
    if button == "backspace" then 
        for i,k in pairs(edits) do 
            local data = k 
            if data.active then 
                if press then 
                    data.text = string.sub(data.text,1,string.len(data.text)-1) 
                    data.tick = getTickCount() 
                    data.bfase = 0 
                    edits[i] = data 
                else 
                    data.tick = 0 
                    data.bfase = 0 
                    edits[i] = data 
                end 
            end 
        end 
    end 
end 
addEventHandler("onClientKey", root, updateEditsKey) 
  
  
function getEditText(element) 
    if getElementType(element) == "dxEdit" then 
        return edits[element].text 
    end 
    return false 
end 

Syntax:

element dxCreateEdit(x float, y float, w float, h float, text string, empty string) 

Ejemplo:

local edit = dxCreateEdit(0, 0, 20, 20, "AsuS", "Nombre de usuario") 

Y sobre lo de la función de movimiento básicamente funciona poniendo 4 posiciones

1º La posición donde esta la camera.

2º La posición a donde mira.

3º La posición donde debe quedar la camera.

4º La posición donde debe mirar la camera.

Es algo básico esa función así que si quieres te dejo mi función con posibilidad de poner muchos movimientos a la vez sin tener que usar ningún tipo de timers ni nada de eso ya sabes donde encontrarme :)

Link to comment
Aquí te dejo mi dxEdit de mi librería personal no estoy seguro de si funciona al 100% separado de ella entera pero si falla algo avísame jeje
local sX, sY = guiGetScreenSize() 
local event = false 
local edits = {} 
  
function drawCompontentes() 
    for i, data in ipairs(edits) do 
        if data.active == false then 
            dxDrawEdit(data.x, data.y, data.w, 32, data.text, data.empty) 
        else 
            dxDrawEdit(data.x, data.y, data.w, 32, data.text, false) 
        end 
        if getKeyState("mouse1") then 
            if isCursorHover(data.x, data.y, data.w, 32) then 
                data.active = true 
            else 
                data.active = false 
            end 
        end 
        if data.tick > 0 and getKeyState("backspace") then 
            if data.bfase == 0 and (getTickCount() - data.tick > 500) then 
                data.text = string.sub(data.text,1,string.len(data.text)-1) 
                data.tick = getTickCount() 
                data.bfase = 1 
            elseif data.bfase == 1 and (getTickCount() - data.tick > 50) then 
                data.text = string.sub(data.text,1,string.len(data.text)-1) 
                data.tick = getTickCount()           
            end 
        end 
        if data.active then 
            local textEnd = (dxGetTextWidth ( data.text, 0.5, getMainFont() ) + 3) > data.w and (data.w) or dxGetTextWidth ( data.text, 0.5, getMainFont() ) + 3 
            dxDrawLine(data.x + textEnd, data.y + 1, data.x + textEnd, data.y + 30,tocolor(0,0,0,255),1) 
        end 
        edits[k] = data 
    end 
end 
  
  
function dxCreateEdit(x, y, w, h, text, empty) 
    if x and y and w and h then 
        local edit = createElement ( "dxEdit" ) 
        if edit then 
            local data = {} 
            data.x = x 
            data.y = y 
            data.w = w 
            data.h = h 
            data.text = text or "" 
            data.active = false 
            data.tick = 0 
            data.bfase = 0 
            data.hover = false 
            data.empty = empty or "" 
            data.img = img or false 
             
            edits[edit] = data 
            if not event then 
                addEventHandler("onClientRender", root, drawCompontentes) 
                addEventHandler("onClientCharacter", getRootElement(), updateEdits) 
                event = true 
            end 
            return edit 
        else 
            outputDebugString("dxLib: Can't create the element.") 
        end 
    else 
        outputDebugString("dxLib: Wrong arguments defined on dxEdit.") 
    end 
    return false 
end 
  
  
function dxDrawEdit(x, y, w, h, text, empty) 
    --local color = c and {230, 230, 230} or {200, 200, 200} 
    dxDrawRectangle ( x, y, w, 32 tocolor (150, 150, 150, 255) ) 
    --shodow(x, y, w, h, {1, 1, 1, 1}, {0, 0, 0}) 
    if dxGetTextWidth ( text, 0.5, getMainFont() ) > w then 
        alignX = "right" 
    else 
        alignX = "left" 
    end 
    dxDrawText( text or "", x + 2, y, w - 2 + x, y + 32, tocolor(0,0,0,255), 0.5, getMainFont(), alignX, "center", true, false ) 
     
    if #text == 0 and empty then 
        dxDrawText( empty, x + 2, y, w - 2 + x, y + 32, tocolor(0,0,0,255), 0.5, getMainFont(), alignX, "center", true, false ) 
    end 
end 
  
  
function dxDestroyed() 
    if getElementType(source) == "dxEdit" then 
        edits[source] = nil 
        if #getElementsByType("dxEdit") - 1 <= 0 then 
            removeEventHandler("onClientRender", root, drawCompontentes) 
            removeEventHandler("onClientCharacter", getRootElement(), updateEdits) 
            event = false 
        end 
    end 
end 
addEventHandler("onClientElementDestroy", root, dxDestroyed) 
  
function updateEdits(character) 
    for i,k in pairs(edits) do 
        local data = k 
        if data.active then 
            data.text = data.text..""..character 
            edits[i] = data 
        end 
    end 
end 
  
function updateEditsKey(button, press) 
    if button == "backspace" then 
        for i,k in pairs(edits) do 
            local data = k 
            if data.active then 
                if press then 
                    data.text = string.sub(data.text,1,string.len(data.text)-1) 
                    data.tick = getTickCount() 
                    data.bfase = 0 
                    edits[i] = data 
                else 
                    data.tick = 0 
                    data.bfase = 0 
                    edits[i] = data 
                end 
            end 
        end 
    end 
end 
addEventHandler("onClientKey", root, updateEditsKey) 
  
  
function getEditText(element) 
    if getElementType(element) == "dxEdit" then 
        return edits[element].text 
    end 
    return false 
end 

Syntax:

element dxCreateEdit(x float, y float, w float, h float, text string, empty string) 

Ejemplo:

local edit = dxCreateEdit(0, 0, 20, 20, "AsuS", "Nombre de usuario") 

Y sobre lo de la función de movimiento básicamente funciona poniendo 4 posiciones

1º La posición donde esta la camera.

2º La posición a donde mira.

3º La posición donde debe quedar la camera.

4º La posición donde debe mirar la camera.

Es algo básico esa función así que si quieres te dejo mi función con posibilidad de poner muchos movimientos a la vez sin tener que usar ningún tipo de timers ni nada de eso ya sabes donde encontrarme :)

Muchas gracias por responder AsuS, ahora me pongo a ver si logro hacerla funcionar y te comento.

:roll:

Link to comment

Bueno, lamento las molestias pero sigo con el mismo problema, si alguno más puede ayudarme lo agradecería.

Pues claro que no te funcionara porque olvidaste algunos argumentos opcionales que requiere el dxDrawText.

dxDrawText(dxText, 390, 347, 626, 383, tocolor(0, 0, 0, 255), 1.00, "default", "left", "center", false, false, false, false, false) 

Link to comment
addEventHandler("onClientResourceStart", resourceRoot, function() 
   editBox = guiCreateEdit(389, 347, 237, 36, "", false) 
   guiSetAlpha(editBox, 0); 
   showCursor(true) 
end) 
  
addEventHandler("onClientRender", root, function() 
    dxText =  guiGetText(editBox )  
    dxDrawRectangle(389, 347, 237, 36); 
    dxDrawText(dxText, 394, 347, 626, 383, tocolor(0, 0, 0, 255), 1.01, "default", "left", "center", false, false, false, false, false) 
end) 
  

Link to comment

Muchas gracias a todos los que me a veis ayudado, la solución de @alex17 fue la que use y me dio resultado pero tengo un pequeño problema, y es que cuando cargo la IMG el dxDrawText se queda atrás y le IMG no me deja ver lo escrito y para saber si me podéis ayudar con esto, gracias.

Link to comment
  • Recently Browsing   0 members

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