Jump to content

Como hacer que este panel login registre y haga logeo a ACL


Monsthers

Recommended Posts

Hola comunidad de MTA tengo un panel login que logea a miembros de SQL añadidos a registry.db mi problema es que he intentado que lea tambien a miembros de ACL pero se me ha hecho imposible, Era para pedirles una ayuda a ustedes haber si podian ayudarme :cc Quiero que registre y que haga logeo a miembros de SQL (Registry.db) y a miembros de ACL Si no es mucho pedir :c Gracias antemano

Client

local resX,resY = guiGetScreenSize() 
local login = {}
local register = {}
local feedback = {}
login.rules = "Una vez que estes logeado, porfavor lee las reglas en F1, si no cumples las reglas puedes ser baneado del servidor, en F1 puedes encontrar informacion de trabajos, gangs, grupos, etc."
login.message = "Ingresa tu usuario y clave"
local passwordEditChanged = true
 
function createGUI()
    local serial = getPlayerSerial()
   
    login.window = guiCreateWindow ( resX /2 -190 , resY /2-120 , 380, 240, "SAVG:RPG Ventana de Logeo", false )
    login.savePWCheck = guiCreateCheckBox ( 285, 142.5, 16, 16, "", false, false, login.window )
    login.ruleslabel = guiCreateLabel ( 10, 30, 360, 100, login.rules, false, login.window )
    login.usernameEdit = guiCreateEdit ( 150, 110, 130, 25, "", false, login.window )
    login.passwordEdit = guiCreateEdit ( 150, 140, 130, 25, "", false, login.window )   
    login.instructions = guiCreateLabel ( 72.5, 80, 240, 15, login.message, false, login.window )
    login.save = guiCreateLabel ( 285, 158, 34, 18, "(Guardar)", false, login.window )
    login.usernameLabel = guiCreateLabel( 80, 115, 60, 15, "Usuario:", false, login.window )
    login.passwordLabel = guiCreateLabel( 80, 145, 60, 15, "Clave:", false, login.window )
    login.loginbtn = guiCreateButton( 90, 190, 80, 30, "Logearse", false, login.window )
    login.regbtn = guiCreateButton ( 190, 190, 80, 30, "Registrarse", false, login.window )
   
    guiSetInputMode("no_binds_when_editing")
    guiSetFont ( login.loginbtn, "default-bold-small" )
    guiSetFont ( login.regbtn, "default-bold-small" )
    guiEditSetMasked(login.passwordEdit,true)
    guiSetFont ( login.save, "default-small" )     
    guiLabelSetColor ( login.ruleslabel, 255, 0, 0 )   
    guiSetFont ( login.ruleslabel, "default-bold-small" )   
    guiLabelSetHorizontalAlign ( login.ruleslabel, "center", true )
    guiWindowSetMovable ( login.window, false )
    guiWindowSetSizable ( login.window, false )
    if not getElementData(localPlayer,"loggedIn") then
        showCursor(true)
        showBackground(true)
        guiSetVisible(login.window,true)
        guiSetInputEnabled(true)
    else
        showBackground(false)
        guiSetVisible(login.window,false)
    end
       
    -- register GUI
    register.window = guiCreateWindow ( resX /2 -250 , resY /2-200, 500, 400, "SAVG:RPG Ventana de Registro", false )
    local registernode = xmlLoadFile("files/xml/register.xml")
    local registertext = xmlNodeGetValue(registernode)
    xmlUnloadFile(registernode)
    register.memo = guiCreateMemo( 5, 25, 490, 220, registertext, false, register.window )
    guiCreateLabel ( 15, 262.5, 60, 15, "Usuario:", false, register.window )
    register.useredit = guiCreateEdit ( 80, 260, 100, 25, "", false, register.window ) 
    guiCreateLabel ( 15, 292.5, 60, 15, "Clave:", false, register.window )
    register.passedit = guiCreateEdit ( 80, 290, 100, 25, "", false, register.window )
    guiCreateLabel ( 190, 292.5, 100, 15, "", false, register.window )
    guiCreateLabel ( 15, 322.5, 120, 15, "Confirmar Clave:", false, register.window )
    register.confpassedit = guiCreateEdit ( 120, 320, 100, 25, "", false, register.window )
    guiCreateLabel ( 15, 352.5, 60, 15, "Email:", false, register.window )
    register.emailedit = guiCreateEdit ( 80, 350, 100, 25, "", false, register.window )
    guiCreateStaticImage ( 310, 250, 115, 95, "files/images/savg.png", false, register.window )
    register.regbtn = guiCreateButton ( 280, 350, 80, 25, "Register", false, register.window )
    register.closebtn = guiCreateButton( 380, 350, 80, 25, "Cancelar", false, register.window )
   
    guiEditSetMasked ( register.passedit, true )
    guiEditSetMasked ( register.confpassedit, true )
    if isElement(register.caselabel) then
        guiSetFont ( register.caselabel, "default-bold-small" )
    end
    guiMemoSetReadOnly ( register.memo, true ) 
    guiWindowSetMovable ( register.window, false )
    guiWindowSetSizable ( register.window, false )
    guiSetVisible ( register.window, false )
       
    -- errorbox GUI
    feedback.window = guiCreateWindow ( resX /2 -150 , resY /2-100, 300, 200, "SAVG:RPG - Informacion", false )
    guiSetProperty(feedback.window,"AlwaysOnTop","True")
    feedback.memo = guiCreateMemo ( 5, 25, 295, 125, "", false, feedback.window  )
    feedback.okbutton = guiCreateButton ( 110, 160, 80, 25, "OK", false, feedback.window )
   
    guiMemoSetReadOnly ( feedback.memo, true )
    guiWindowSetMovable ( feedback.window, false )
    guiWindowSetSizable ( feedback.window, false )
    guiSetVisible ( feedback.window, false )
   
    -- Message GUI
    noticewindow = guiCreateWindow ( resX /2 -175 , resY /2-100, 350, 200, "SAVG:RPG - Informacion", false )
    guiSetProperty(noticewindow,"AlwaysOnTop","True")
    guiSetAlpha(noticewindow, 1)
    noticetext = guiCreateLabel ( 15, 20, 332, 125, "", false, noticewindow  )
    noticeokbutton = guiCreateButton ( 135, 160, 80, 25, "OK", false, noticewindow )
   
    guiWindowSetMovable ( noticewindow, false )
    guiWindowSetSizable ( noticewindow, false )
   
    guiSetText ( noticetext, "Por Favor Leer La Nota: Bievenido a SAVG:RPG un servidor con la mejor experiencia de juego, Por ahora estamos usando 2 Login por motivos de seguridad! Recuerda nuestro server es nuevo y no queremos que pierdas tus cosas! Pronto usaremos solo 1 estamos trabajando en eso." )
    guiLabelSetColor(noticetext, 255,0,0)
   
    guiSetFont ( noticetext, "default-bold-small" ) 
    guiLabelSetHorizontalAlign ( noticetext, "center", false )
   
    guiSetVisible ( noticewindow, false )
    guiBringToFront ( noticewindow )
   
    addEventHandler("onClientGUIClick",resourceRoot,onWindowClicked)
    addEventHandler("onClientGUIAccepted",resourceRoot,onGUIAccepted)
    addEventHandler("onClientGUIChanged",resourceRoot,onEditChanged)
   
    loginFilePath = "files/xml/"..md5(serial.."SAVGlogin")..".xml" 
    oldFile = xmlLoadFile("files/xml/login.xml")
    if oldFile then
        xmlNodeSetValue(oldFile,"")
        xmlSaveFile(oldFile)
        xmlUnloadFile(oldFile)
        oldFile = nil
    end
   
    loginFile = xmlLoadFile(loginFilePath)
    if loginFile then
        usernameNode = xmlFindChild(loginFile,"username",0)
        if not usernameNode then
            usernameNode = xmlCreateChild(loginFile,"username","")
        end
        --passwordNode = xmlNodeFindChild(loginFile,"password",0)
        passkeyNode = xmlFindChild(loginFile,"passkey",0)
        if not passkeyNode then
            passkeyNode = xmlCreateChild(loginFile,"passkey","")
        end
        local passwordNode = xmlFindChild(loginFile,"password",0)
        if passwordNode then
            xmlDestroyNode(passwordNode)
        end
        xmlSaveFile(loginFile)
    else
        loginFile = xmlCreateFile(loginFilePath,"login")
        usernameNode = xmlCreateChild(loginFile,"username","")
        passkeyNode = xmlCreateChild(loginFile,"passkey","")
        xmlSaveFile(loginFile)
    end
    fillCredentials()
end
addEventHandler("onClientResourceStart",resourceRoot,createGUI)
 
function onWindowClicked(button,state)
    if button == "left" and state == "up" then
        if source == login.loginbtn then
            local username = guiGetText(login.usernameEdit):lower()
            local password = guiGetText(login.passwordEdit)
            if username and username ~= "" and password and password ~= "" then
                if passwordEditChanged then
                    triggerServerEvent("SAlogin.playerLogin",localPlayer,username,md5(username.."SAVG"..password):lower(),getPlayerSerial())
                else
                    triggerServerEvent("SAlogin.playerLogin",localPlayer,username,password,getPlayerSerial())
                end
            else
                showError("Ingresa un usuario y una contraseña.")
            end
        elseif source == login.regbtn then
            showRegister()
            showBackground(true)
        elseif source == register.closebtn then
            hideRegister()
        elseif source == feedback.okbutton then
            hideError()
        elseif source == noticeokbutton then
            hideMsg()
        elseif source == register.regbtn then
            local username = guiGetText(register.useredit):lower()
            local password = guiGetText(register.passedit)
            local confpass = guiGetText(register.confpassedit)
            local email = guiGetText(register.emailedit)
            if username and password and confpass and email and username ~= "" and password ~= "" and email ~= "" then
                if password == confpass then
                    if #password >= 6 then
                        password = md5(username.."SAVG"..password):lower()
                        if string.find (email, "@") and string.find (email, "%.") then
                            triggerServerEvent("SAlogin.playerRegisterAccount",localPlayer,username,password,email)
                        else
                            showError("Direccion de email incorrecta") 
                        end
                    else
                        showError("La clave debe tener como minimo 6 numeros")
                    end
                else
                    showError("Las claves no coinciden")   
                end
            else
                showError("Llena todos los formatos por favor")
            end
        end
    end
end
 
function onGUIAccepted()
    if source == login.passwordEdit then
        local username = guiGetText(login.usernameEdit):lower()
        local password = guiGetText(login.passwordEdit)
        if username and username ~= "" and password and password ~= "" then
            if passwordEditChanged then
                triggerServerEvent("SAlogin.playerLogin",localPlayer,username,md5(username.."SAVG"..password):lower(),getPlayerSerial())
            else
                triggerServerEvent("SAlogin.playerLogin",localPlayer,username,password,getPlayerSerial())
            end
        else
            showError("Ingresa un usuario y una clave.")
        end
    end
end
 
function onEditChanged()
    if source == login.passwordEdit then
        passwordEditChanged = true
    end
end
function fillCredentials()
    -- we assume loginFile, passkeyNode and usernameNode exist
    if loginFile and passkeyNode and usernameNode then
        local usertext = xmlNodeGetValue(usernameNode)
        local passkey = xmlNodeGetValue(passkeyNode)
        if usertext and passkey and usertext ~= "" then
            guiSetText(login.usernameEdit,usertext)
            guiSetText(login.passwordEdit,passkey)
            guiCheckBoxSetSelected(login.savePWCheck,true)
            passwordEditChanged = false
        end
    end
end
 
function saveCredentials()
    if loginFile and passkeyNode and usernameNode then
        local usertext,passkey
        if guiCheckBoxGetSelected(login.savePWCheck) == false then
            usertext,passkey = "",""
        else
            usertext = guiGetText(login.usernameEdit):lower()
            passkey = guiGetText(login.passwordEdit)
        end
        if usertext and passkey then
            if passwordEditChanged then
                passkey = md5(usertext.."SAVG"..passkey):lower()
            end
            xmlNodeSetValue(usernameNode,usertext)
            xmlNodeSetValue(passkeyNode,passkey)
            xmlSaveFile(loginFile)
            --xmlUnloadFile(loginFile)
            loginFile = nil
        end
    end
end
addEventHandler("onClientResourceStop",resourceRoot,saveCredentials)
 
function showLogin()
    showBackground(true)
   
Link to comment
A que te refieres con que lea los miembros de la acl? Con que objetivo quieres hacerlo?

Este login solo lee los miembros añadidos ala database "Registry.db" lo que quiero es que lea tambien los de acl! Yo tengo un panel para los staff que se loguen en la database pero el panel admin lo quiero para los miembros full.. Y como el panel loguea solo a los de database cuando un admin full entra tiene que loguearse manualmente usando /Login o /Register y asi no lo quiero! Quiero que lea a ambos (Ala database "Registry.db" y alos miembros añadidos a ACL) con el fin de loguear a ambos sin necesidad de estar uno manualmente y otro con el panel...

Lo que quisiera sin mas pedir es que le añadan esa funcion ya el tiene las funciones para que logue alos de la database ahora si ustedes como ayuda podrian añadirle las funciones para que registre y logue alos de ACL asi podria tener el panel bien :( Gracias antemano

Link to comment

Por lo que entendi, creaste tu propio sistema de logueo. Las cuentas no se registran y loguean en la base de datos de MTA. Al no hacer esto, no puedes hacer uso de las funciones Account. Al no poder usarlas, eso te imposibilita dar derechos de ACL. Puedes resolverlo de 2 maneras:

- Una solucion seria tener usar tu base de datos y loguear igualmente a los players en la base de datos por defecto de MTA, asi igualmente tendrias acceso a tu base de datos, pero no seria muy optimo usar 2.

- Podrías crear tu propio sistema de acl y por consiguiente tendrias que hacer tu propio panel admin.

Si eres buen scripter te aconsejo la segunda opcion, ya que al hacer esto tendrás que editar tus scripts que usen funciones de tipo Account. Si recién estas comenzando mejor haz la primera.

Link to comment
  • Recently Browsing   0 members

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