Jump to content

Login panel bug


Seyer

Recommended Posts

Hola, tengo un problema y no sé si es cosa mía o de como configuré este log-in (lo hice a partir de un video que decía como configurarlo y crearlo) el tema es que en el video (llegado el momento) dice que ejecutemos el comando anteriormente puesto y se le abre la ventana del login pero a mí me sucede todo lo contrario aunque yo haya establecido el mismo comando, haya puesto los mismos nombres en las funciones, etc. no pasa nada. Y ahora, no sé por qué, no me abre el "editor_gui" aunque ponga "/guied" o apriete "shift+c" (este dejo de funcionar a la segunda vez que use el "editor_gui") y como no lo puedo abrir, no puedo agregar un botón de regresar que me faltó en el registro para que vuelva al log-in panel. La verdad, no tengo ni idea de lo que sucede ni como arreglarlo ya que soy nuevo en Scripting y lo relacionado. (Mi primer resource es este login y al ver que no pasa nada es medio frustrante, jaja)

Este es el client.lua:

local screenM, screenH = guiGetScreenSize()
 
 function reg()
        winRegister = guiCreateWindow(387, 256, 414, 313, "Register panel by Seyer", false)
        guiWindowSetSizable(winRegister, false)

        usuario = guiCreateEdit(236, 24, 167, 43, "", false, winRegister)
        GUIEditor.label[1] = guiCreateLabel(17, 23, 159, 44, "Usuario:", false, winRegister)
        guiSetFont(GUIEditor.label[1], "sa-header")
        guiLabelSetColor(GUIEditor.label[1], 15, 239, 253)
        GUIEditor.label[2] = guiCreateLabel(19, 92, 217, 44, "Contraseña:", false, winRegister)
        guiSetFont(GUIEditor.label[2], "sa-header")
        guiLabelSetColor(GUIEditor.label[2], 15, 239, 253)
        GUIEditor.label[3] = guiCreateLabel(19, 160, 217, 44, "Contraseña:", false, winRegister)
        guiSetFont(GUIEditor.label[3], "sa-header")
        guiLabelSetColor(GUIEditor.label[3], 15, 239, 253)
        contraseña1 = guiCreateEdit(236, 94, 167, 42, "", false, winRegister)
		guiEditSetMasked(contraseña1,true)
        contraseña2 = guiCreateEdit(236, 160, 167, 44, "", false, winRegister)
		guiEditSetMasked(contraseña2,true)
        brtRegistrar = guiCreateButton(9, 234, 394, 69, "Register", false, winRegister)
        guiSetFont(GUIEditor.button[1], "sa-header")
        guiSetProperty(GUIEditor.button[1], "NormalTextColour", "FF0FEFFD")
        GUIEditor.label[4] = guiCreateLabel(27, 205, 56, 19, "(máx. 25)", false, winRegister)
        guiSetFont(GUIEditor.label[4], "default-bold-small")
        guiLabelSetColor(GUIEditor.label[4], 254, 254, 254)
        GUIEditor.label[5] = guiCreateLabel(27, 136, 56, 19, "(máx. 25)", false, winRegister)
        guiSetFont(GUIEditor.label[5], "default-bold-small")
        guiLabelSetColor(GUIEditor.label[5], 254, 254, 254)
        GUIEditor.label[6] = guiCreateLabel(27, 67, 56, 19, "(máx. 25)", false, winRegister)
        guiSetFont(GUIEditor.label[6], "default-bold-small")
        guiLabelSetColor(GUIEditor.label[6], 254, 254, 254)   

		addEvent("onClientGUIClick",brtRegistrar,function()
		user=guiGetText(usuario)
		c=guiGetText(contraseña1)
		c1=guiGetText(contraseña2)

		if(c==c1)then
			triggerServerEvent("rg",getLocalPlayer(),user,c)
		outputChatBox("Las contraseñas coinciden.")
		else
		outputChatBox("Las contraseñas no coinciden.")
 end
 
	addEvent("cerrar",true")
	addEventHandler("cerrar,getLocalPlayer(),function()
	guiSetVisible(winRegister,false)
	showCursor(false)
	
	addEvent("cerrar2",true")
	addEventHandler("cerrar,getLocalPlayer(),function()
	guiSetVisible(winLogin,false)
	showCursor(false)

 function login()
        winLogin = guiCreateWindow(387, 256, 414, 316, "Log-in panel by Seyer", false)
        guiWindowSetSizable(winLogin, false)

        usuario = guiCreateEdit(236, 24, 167, 43, "", false, winLogin)
        GUIEditor.label[1] = guiCreateLabel(17, 23, 159, 44, "Usuario:", false, winLogin)
        guiSetFont(GUIEditor.label[1], "sa-header")
        guiLabelSetColor(GUIEditor.label[1], 15, 239, 253)
        GUIEditor.label[2] = guiCreateLabel(19, 92, 217, 44, "Contraseña:", false, winLogin)
        guiSetFont(GUIEditor.label[2], "sa-header")
        guiLabelSetColor(GUIEditor.label[2], 15, 239, 253)
        contraseña1 = guiCreateEdit(236, 94, 167, 42, "", false, winLogin)
        btrLoggearse = guiCreateButton(10, 165, 394, 68, "Login", false, winLogin)
        guiSetFont(GUIEditor.button[1], "sa-header")
        guiSetProperty(GUIEditor.button[1], "NormalTextColour", "FF0FEFFD")
        GUIEditor.label[3] = guiCreateLabel(27, 136, 56, 19, "(máx. 25)", false, winLogin)
        guiSetFont(GUIEditor.label[3], "default-bold-small")
        guiLabelSetColor(GUIEditor.label[3], 254, 254, 254)
        GUIEditor.label[4] = guiCreateLabel(27, 67, 56, 19, "(máx. 25)", false, winLogin)
        guiSetFont(GUIEditor.label[4], "default-bold-small")
        guiLabelSetColor(GUIEditor.label[4], 254, 254, 254)
        registro = guiCreateButton(11, 240, 393, 66, "Register", false, winLogin)
        guiSetFont(GUIEditor.button[2], "sa-header")
        guiSetProperty(GUIEditor.button[2], "NormalTextColour", "FF0FEFFD")    
    
		showCursor(true)
		addEvent("onClientGUIClick",registro,function()
		guiSetVisible(winLogin, false)
		reg()
		end)
		addEvent("onClientGUIClick",btrLoggearse,function()
		user = guiGetText(usuario)
		clave = guiGetText(pass)
		
		triggerServerEvent("lg",getLocalPlayer(),user,clave)
 end

addCommandHandler("log",login)
 
addEvent("abrirlogin",true)
addEventHandler("abrirlogin",getLocalPlayer(),login)

y este es el server.lua:

function rg(user,clave)
	if(addAccount(user,clave))then
		outputChatBox("Regristado correctamente.")
		triggerClientEvent(source,"cerrar",source)
		logIn(source,getAccount(user,clave),clave)
	else
		outputChatBox("La cuenta ya existe.")
	end

addEvent("rg",true)
addEventHandler("rg", getRootElement(),rg)

function lg(user,clave)
	cuenta = getAccount(user,clave)
	if(cuenta)then
		logIn(source,getAccount(user,clave),clave)
		triggerClientEvent(source,"cerrar2",source)
	else
		outputChatBox("La cuenta no existe o usuario y/o contraseña incorrectos.")
	end

addEvent("lg",true)
addEventHandler("lg", getRootElement(),lg)
addEventHandler("onPlayerJoin",getRootElement(),function()
triggerClientEvent(source,"abrirlogin",source)
end)

Saludos y gracias de antemano.

Link to comment

El problema es que tu script tiene muchos errores... Usas addEvent para detectar el click en vez de addEventHandler, funciones sin cerrar, entre otros...

Edite tu script para que se pudiera abrir el panel, sin embargo creo que ese login no funcionará en la parte para logearte y registrarte. Si necesitas ayuda para eso me dices y te ayudo. 

Client

local screenM, screenH = guiGetScreenSize()
 
 function reg()
        winRegister = guiCreateWindow(387, 256, 414, 313, "Register panel by Seyer", false)
        guiWindowSetSizable(winRegister, false)

        usuario = guiCreateEdit(236, 24, 167, 43, "", false, winRegister)
        labelUsuario = guiCreateLabel(17, 23, 159, 44, "Usuario:", false, winRegister)
        guiSetFont(  labelUsuario, "sa-header")
        guiLabelSetColor(  labelUsuario, 15, 239, 253)
        labelPassword = guiCreateLabel(19, 92, 217, 44, "Contraseña:", false, winRegister)
        guiSetFont(labelPassword, "sa-header")
        guiLabelSetColor(labelPassword, 15, 239, 253)
        labelPassword2 = guiCreateLabel(19, 160, 217, 44, "Contraseña:", false, winRegister)
        guiSetFont(labelPassword2, "sa-header")
        guiLabelSetColor( labelPassword2, 15, 239, 253)
        contrasena1 = guiCreateEdit(236, 94, 167, 42, "", false, winRegister)
		guiEditSetMasked(contrasena1,true)
        contrasena2 = guiCreateEdit(236, 160, 167, 44, "", false, winRegister)
		guiEditSetMasked(contrasena2,true)
        brtRegistrar = guiCreateButton(9, 234, 394, 69, "Register", false, winRegister)
        guiSetFont(brtRegistrar, "sa-header")
        guiSetProperty(brtRegistrar, "NormalTextColour", "FF0FEFFD")
        max5 = guiCreateLabel(27, 205, 56, 19, "(máx. 25)", false, winRegister)
        guiSetFont(max5, "default-bold-small")
        guiLabelSetColor(max5, 254, 254, 254)
        max25 = guiCreateLabel(27, 136, 56, 19, "(máx. 25)", false, winRegister)
        guiSetFont(max25, "default-bold-small")
        guiLabelSetColor(max25, 254, 254, 254)
        max26 = guiCreateLabel(27, 67, 56, 19, "(máx. 25)", false, winRegister)
        guiSetFont(max26, "default-bold-small")
        guiLabelSetColor(max26, 254, 254, 254)   

		addEventHandler("onClientGUIClick",brtRegistrar,function()
			user=guiGetText(usuario)
			c=guiGetText(contrasena1)
			c1=guiGetText(contrasena2)
		end)

		if(c==c1)then
			triggerServerEvent("rg",getLocalPlayer(),user,c)
			outputChatBox("Las contraseñas coinciden.")
		else
			outputChatBox("Las contraseñas no coinciden.")
		end
 end
 
	addEvent("cerrar",true)
	addEventHandler("cerrar",getLocalPlayer(),function()
	guiSetVisible(winRegister,false)
	showCursor(false)
	end)
	
	addEvent("cerrar2",true)
	addEventHandler("cerrar",getLocalPlayer(),function()
	guiSetVisible(winLogin,false)
	showCursor(false)
	end)

 function login()
        winLogin = guiCreateWindow(387, 256, 414, 316, "Log-in panel by Seyer", false)
        guiWindowSetSizable(winLogin, false)

        usuario = guiCreateEdit(236, 24, 167, 43, "", false, winLogin)
        label1 = guiCreateLabel(17, 23, 159, 44, "Usuario:", false, winLogin)
        guiSetFont(label1, "sa-header")
        guiLabelSetColor(label1, 15, 239, 253)
		label2 = guiCreateLabel(19, 92, 217, 44, "Contraseña:", false, winLogin)
        guiSetFont(label2, "sa-header")
        guiLabelSetColor(label2, 15, 239, 253)
        contrasena1 = guiCreateEdit(236, 94, 167, 42, "", false, winLogin)
        btrLoggearse = guiCreateButton(10, 165, 394, 68, "Login", false, winLogin)
        guiSetFont(btrLoggearse, "sa-header")
        guiSetProperty(btrLoggearse, "NormalTextColour", "FF0FEFFD")
        label3 = guiCreateLabel(27, 136, 56, 19, "(máx. 25)", false, winLogin)
        guiSetFont(label3, "default-bold-small")
        guiLabelSetColor(label3, 254, 254, 254)
        label4 = guiCreateLabel(27, 67, 56, 19, "(máx. 25)", false, winLogin)
        guiSetFont(label4, "default-bold-small")
        guiLabelSetColor(label4, 254, 254, 254)
        registro = guiCreateButton(11, 240, 393, 66, "Register", false, winLogin)
        guiSetFont(registro, "sa-header")
        guiSetProperty(registro, "NormalTextColour", "FF0FEFFD")    
    
		showCursor(true)
		addEventHandler("onClientGUIClick",registro,function()
		guiSetVisible(winLogin, false)
		reg()
		end)
		addEventHandler("onClientGUIClick",btrLoggearse,function()
		user = guiGetText(usuario)
		clave = guiGetText(contrasena1)
		end)
		
		triggerServerEvent("lg",getLocalPlayer(),user,clave)
 end
addCommandHandler("log",login)
addEvent("abrirlogin",true)
addEventHandler("abrirlogin",getLocalPlayer(),login)

Server


function rg(user,clave)
	if(addAccount(user,clave))then
		outputChatBox("Regristado correctamente.")
		triggerClientEvent(source,"cerrar",source)
		logIn(source,getAccount(user,clave),clave)
	else
		outputChatBox("La cuenta ya existe.")
	end
end

addEvent("rg",true)
addEventHandler("rg", getRootElement(),rg)

function lg(user,clave)
	cuenta = getAccount(user,clave)
	if(cuenta)then
		logIn(source,getAccount(user,clave),clave)
		triggerClientEvent(source,"cerrar2",source)
	else
		outputChatBox("La cuenta no existe o usuario y/o contraseña incorrectos.")
	end
end

addEvent("lg",true)
addEventHandler("lg", getRootElement(),lg)
addEventHandler("onPlayerJoin",getRootElement(),function()
triggerClientEvent(source,"abrirlogin",source)
end)

Si quieres saber tus errores, éstos son:

  • Usabas 'addEvent' para usar onClientGUIClick como evento, tenías que usar addEventHandler.
  • Habían unas dos funciones sin cerrar, es decir, te faltaba ponerles un 'end'.
  • Usabas la letra 'ñ' para las variables. Sólo puedes usar la ñ y tildes en cadenas de texto (strings) o sino dará error
  • Mezclabas variables del GUIEDITOR no existentes en tu script, ese es otro error más. Te recomiendo que cada gui-element que crees con el guieditor le pongas una variable enseguida, o puedes hacerlo al final, como gustes.
  • Había una variable inexistente (pass) que realmente era contraseña1, la cambie por contrasena1.
Link to comment

Muchas gracias por la ayuda, pero:

  • ¿Cuál es la diferencia entre addevent y addEventHandler?
  • ¿Cuáles eran las variables inexistentes en mi script?
  • ¿Podrías ayudarme con lo del login? Ya que al abrirlo me dice directamente (sin poner nada) " La cuenta no existe o usuario y/o contraseña incorrectos. ", al tratar de loggearme no sucede nada y al registrarme me dice "La cuenta ya existe." (aunque ponga cualquier cosa)
  • ¿Hay alguna diferencia al poner espacios en las lineas? Ej:  addEventHandler("cerrar",getLocalPlayer(),function()  y addEventHandler ("cerrar", getLocalPlayer(), function()

Saludos y gracias nuevamente por ayudarme.

Edited by Seyer
Link to comment

1. Según sé la diferencia entre esos dos  es que, addEvent es para crear un evento personalizado por ti, o sea, no puedes usar addEvent("onClientGUIClick", true) porque por obvias razones dará error, primero porque onClientGUIClick es un evento de "fábrica" por lo que no te recomiendo usarlo si algún día haces un evento personalizado. A personalizado solo me refiero a que puedes crear tus propios eventos como: "onPlayerJump", pero claro, para ejecutar éste evento tienes que hacer una función a parte. Aunque  el addEvent lo usaras más que todo para triggers de client a server o viceversa. Y pues con eso ya te debes dar una idea de lo que sería addEventHandler... Si aún tienes dudas, puedes leer la wiki o mandarme un mp para explicarte mejor (si quieres). 

2.Veré si más tarde lo reviso

3. No, no hay diferencias. Pero ni se te ocurra poner un espacio en el nombre asignado a la variable o en alguna función, en un string si puedes (creo que ya lo sabes) . 

Y sobre las variables no existentes(más bien no definidas) me refiero a que vi em ciertas partes variables como: GUIEDITOR.label[1] pero GUIEDITOR jamás le diste un valor, o, en este caso, jamás creaste la tabla.

El otro caso es que usabas: guiGetText(pass) pero pass tampoco la habías definido, no estaba en tu script. Por eso inexistente. 

 

Edited by Hit+
Link to comment

Si lo que quieres es crear scripts para MTA (por ahora) te recomiendo que primero aprendas cómo funciona Lua y su sintaxis, la wiki o tutoriales sobre cómo crear scripts para MTA no te ayudarán en nada si eres nuevo, solo te confundirán. Te recomiendo que busques por internet qué son los operadores lógicos, aritméticos, qué son variables, qué son las tablas en Lua, bucles y entre otras cosas.

Algo que si te digo es que para mi no hay manera de aprender a programar (o mejorar) mejor, porque para hacer grandes cosas primero tienes que tener errores, porque de los errores salen los profesionales, de los errores, nada más. 

Sin embargo ten siempre en cuenta el orden de tu código para que se te haga más fácil a ti y a los que lean tu código entenderlo. 

Otra cosa... Eres nuevo, ¿cierto?, ¿cómo piensas tirarte a hacer un panel de login de una vez :lol:? tampoco es que sea tan complicado pero estoy seguro que no entiendes nada de lo que está en ese código. Primero empieza por cosas más básicas...

Yo cometí el mismo error que tu (cuando comencé), solo que yo quería hacer un panel en DirectX (algo imposible para mi en ese tiempo).

 

    

Edited by Hit+
Link to comment

Es que siempre descargué de los resources de la comunidad y quería empezar a hacerlos por mi mismo por eso busqué un video para hacer dicho login. Me fui dando cuenta más o menos de qué cosa era cada una, cómo funcionaba y cómo arregarlo (no del todo claramente porque empecé ayer, pero por ahora "la voy piloteando"). Ahora, por ejemplo, empecé otro panel desde 0 (es el mismo pero con el código que vos me diste) y le agregué un botón para cambiar entre registro o log-in, le puse un showCursor(trueal registro creo que era ya que no me aparecía el cursor (no por fallo tuyo sino por fallo mío) y creo que nada más (pero me costó, jeje). Lo que sí, me tira error en la consola sobre un "Bad argument" y al fijarme en la wiki la sintaxis y cambiarlo a mis archivos también me dice "Bad argument". O no sé cómo hacer para arreglarlo o no entiendo la wiki, :lol:.

Edited by Seyer
Link to comment

Ahora que me doy cuenta, formulé mal la oración. Lo que quise decir fue: "en la consola me da error sobre el server.lua el cual, claramente, es del panel."

Ese error, es el "Bad argument" y me dice que lo tiene tiene el getAccount y el addAccount.

Perdón por el doble comentario pero no me deja modificar el comentario anterior.

Link to comment
  • 5 weeks later...
  • Recently Browsing   0 members

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