AlFA# Posted April 19, 2015 Share Posted April 19, 2015 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
Enargy, Posted April 19, 2015 Share Posted April 19, 2015 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
AlFA# Posted April 20, 2015 Author Share Posted April 20, 2015 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
alex17 Posted April 20, 2015 Share Posted April 20, 2015 creo que no es posible vas a tener que usar un dxDrawText encima del editbox Link to comment
AlFA# Posted April 20, 2015 Author Share Posted April 20, 2015 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. Link to comment
Enargy, Posted April 21, 2015 Share Posted April 21, 2015 (edited) 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 April 21, 2015 by Guest Link to comment
Tomas Posted April 21, 2015 Share Posted April 21, 2015 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
AlFA# Posted April 21, 2015 Author Share Posted April 21, 2015 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
Arsilex Posted April 21, 2015 Share Posted April 21, 2015 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
AlFA# Posted April 21, 2015 Author Share Posted April 21, 2015 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. Link to comment
AlFA# Posted April 21, 2015 Author Share Posted April 21, 2015 Bueno, lamento las molestias pero sigo con el mismo problema, si alguno más puede ayudarme lo agradecería. Link to comment
Enargy, Posted April 21, 2015 Share Posted April 21, 2015 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
alex17 Posted April 22, 2015 Share Posted April 22, 2015 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
AlFA# Posted April 22, 2015 Author Share Posted April 22, 2015 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
alex17 Posted April 22, 2015 Share Posted April 22, 2015 tienes que poner en el codigo primero que dibuje la imagen y luego el texto algo asi dxDrawImage(...) dxDrawText(...) Link to comment
AlFA# Posted April 23, 2015 Author Share Posted April 23, 2015 tienes que poner en el codigo primero que dibuje la imagen y luego el textoalgo asi dxDrawImage(...) dxDrawText(...) Muchas gracias @alex17, me has ayudado mucho Link to comment
Recommended Posts