Jump to content

[HELP]Advanced accounts system(GUI + Login + Register)


Recommended Posts

Hi i am new scripting and i try to make a RP server!

Now i am working at a new resource (accounts-system)

It contains Login/Register Panel(GUI)

Database for accounts(Custom accounts;Dont use mta sa accounts system)

And i have some problems with my scripts

The resource contains 5 .lua files

1.c_log.reg.gui(Login/Register Panel )

2.c_log.reg.debug(Contains events with errors)

3.s_database(Loading the database)

4.s_login.validate

5.s_register.validate

1.c_log.reg.gui.lua

  
addEventHandler("onClientResourceStart", resourceRoot, 
    function() 
        acc_guiWindow = guiCreateWindow(608, 470, 384, 430, "Multi Role Play : Inceputul", false) --The window 
        guiWindowSetSizable(acc_guiWindow, false) 
  
        acc_GuiTabPanel = guiCreateTabPanel(9, 19, 361, 399, false, acc_guiWindow) --TabPanel 
  
        acc_loginTab = guiCreateTab("Logare", acc_GuiTabPanel) --LoginTab 
  
        login_userLabel = guiCreateLabel(20, 7, 146, 53, "Nume", false, acc_loginTab)  
        guiSetFont(login_userLabel, "sa-header") 
        login_passwordLabel = guiCreateLabel(20, 65, 146, 53, "Parola", false, acc_loginTab) 
        guiSetFont(login_passwordLabel, "sa-header") 
        login_inputUser = guiCreateEdit(174, 19, 177, 31, "", false, acc_loginTab)      --inputUser 
        login_inputPassword = guiCreateEdit(174, 77, 177, 31, "", false, acc_loginTab)  --inputPassword 
        acc_loginButton = guiCreateButton(76, 146, 204, 48, "Logheaza-te", false, acc_loginTab) --loginbutton 
        guiSetFont(acc_loginButton, "default-bold-small") 
        guiSetProperty(acc_loginButton, "NormalTextColour", "FFAAAAAA") 
        login_debugLabel = guiCreateLabel(21, 209, 330, 157, "Pentru un GUI mai frumos accesati \n\nSettings\Interface\Skin si alegeti  \n\nLighter Black", false, acc_loginTab) --debuglabel 
        guiSetFont(login_debugLabel, "default-small") 
        guiLabelSetColor(login_debugLabel, 255, 0, 0) 
        guiLabelSetHorizontalAlign(login_debugLabel, "center", false) 
  
        acc_registerTab = guiCreateTab("Inregistrare", acc_GuiTabPanel) --tab 
  
        register_userLabel = guiCreateLabel(12, 6, 146, 46, "Nume", false, acc_registerTab) 
        guiSetFont(register_userLabel, "sa-header") 
        register_passwordLabel = guiCreateLabel(12, 52, 146, 46, "Parola", false, acc_registerTab) 
        guiSetFont(register_passwordLabel, "sa-header") 
        register_userInput = guiCreateEdit(165, 20, 186, 32, "", false, acc_registerTab)  --userinput 
        register_passwordInput = guiCreateEdit(165, 62, 186, 32, "", false, acc_registerTab)--passwordinput 
        register_passRecoveryText = guiCreateLabel(15, 108, 336, 16, " -- Pentru recuperarea parolei --", false, acc_registerTab) 
        guiLabelSetHorizontalAlign(register_passRecoveryText, "center", false) 
        register_passRecoveryQuestion = guiCreateLabel(22, 131, 50, 21, "1 + 1 = ", false, acc_registerTab) 
        guiSetFont(register_passRecoveryQuestion, "default-bold-small") 
        register_inputQuestionAnswer = guiCreateEdit(70, 134, 32, 15, "", false, acc_registerTab)--recoveryinput 
        register_recoveryNote = guiCreateLabel(107, 132, 248, 17, "! Raspunsul trebuie sa fie un numar", false, acc_registerTab) 
        guiSetFont(register_recoveryNote, "default-bold-small") 
        guiLabelSetColor(register_recoveryNote, 255, 0, 0) 
        acc_registerButton = guiCreateButton(69, 159, 240, 59, "Inregistreaza-te", false, acc_registerTab) --register button 
        guiSetFont(acc_registerButton, "default-bold-small") 
        guiSetProperty(acc_registerButton, "NormalTextColour", "FFAAAAAA") 
        register_debugOutput = guiCreateLabel(28, 222, 317, 138, "Pentru un GUI mai frumos accesati \n\nSettings\Interface\Skin si alegeti  \n\nLighter Black", false, acc_registerTab) 
        guiSetFont(register_debugOutput, "default-small") 
        guiLabelSetColor(register_debugOutput, 255, 0, 0) 
        guiLabelSetHorizontalAlign(register_debugOutput, "center", false) 
  
        acc_RecoveryTab = guiCreateTab("Recupereaza cont", acc_GuiTabPanel) 
  
        recovery_nameLabel = guiCreateLabel(16, 12, 68, 41, "Nume", false, acc_RecoveryTab) 
        guiSetFont(recovery_nameLabel, "default-bold-small") 
        guiLabelSetHorizontalAlign(recovery_nameLabel, "center", false) 
        recovery_userInput = guiCreateEdit(94, 12, 135, 19, "", false, acc_RecoveryTab) 
        recovery_labelPassword = guiCreateLabel(16, 53, 68, 41, "Parola noua", false, acc_RecoveryTab) 
        guiSetFont(recovery_labelPassword, "default-bold-small") 
        guiLabelSetHorizontalAlign(recovery_labelPassword, "center", false) 
        recovery_passwordInput = guiCreateEdit(94, 53, 135, 19, "", false, acc_RecoveryTab) 
        recovery_answerLabel = guiCreateLabel(16, 94, 74, 41, "Raspuns \n intrebare", false, acc_RecoveryTab) 
        guiSetFont(recovery_answerLabel, "default-bold-small") 
        guiLabelSetHorizontalAlign(recovery_answerLabel, "center", false) 
        recovery_answerInput = guiCreateEdit(94, 98, 135, 19, "", false, acc_RecoveryTab) 
        acc_recoveryButton = guiCreateButton(87, 151, 171, 71, "Recupereaza cont", false, acc_RecoveryTab) 
        guiSetFont(acc_recoveryButton, "default-bold-small") 
        guiSetProperty(acc_recoveryButton, "NormalTextColour", "FFAAAAAA") 
        recovery_debugLabel = guiCreateLabel(15, 230, 336, 140, "'Raspuns intrebare' e raspunsul la intrebarea 1 + 1 care  \n l-ai dat cand ti-ai facut contul", false, acc_RecoveryTab) 
        guiSetFont(recovery_debugLabel, "default-small") 
        guiLabelSetColor(recovery_debugLabel, 255, 0, 0) 
        guiLabelSetHorizontalAlign(recovery_debugLabel, "center", false) 
  
        addEventHandler("onClientGUIClick",acc_loginButton,validateLogin) 
        addEventHandler("onClientGUIClick",acc_registerButton,validateRegister) 
        addEventHandler("onClientGUIClick",acc_recoveryButton,vaalidateRecovery) 
    end 
) 
  
function validateLogin(button,state) 
    panelUser = tostring(guiGetText(login_inputUser)) 
    panelPassword = tostring(guiGetText(login_inputPassword)) 
  
    if button == "left" and state == "up" then 
        triggerServerEvent("logInToServer",resourceRoot,panelUser,panelPassword) 
    end  
end 
  
function validateRegister(button,state) 
    panelUser = guiGetText(register_userInput) 
    panelPassword = guiGetText(register_passwordInput) 
    panelAnswer = tonumber(guiGetText(register_inputQuestionAnswer)) 
    if button == "left" and state == "up" then 
        triggerServerEvent("registerToServer",resourceRoot,panelAnswer,panelPassword,panelUser) 
    end 
end 
  
function vaalidateRecovery(button,state) 
    panelUser = guiGetText(recovery_userInput) 
    panelPassword = guiGetText(recovery_passwordInput) 
    panelAnswer = guiGetText(recovery_answerInput) 
    if button == "left" and state == "up" then 
        triggerServerEvent("recoverAccount",resourceRoot,panelAnswer,panelPassword,panelUser) 
    end 
end 

2.c_log.reg.debug.lua

playerNickName = getPlayerName(getLocalPlayer()) 
  
--Login Events 
addEvent("wrongLoginUser",true) 
function isLoginUserWrong() 
    guiSetText(login_debugLabel,"Numele sau Parola este \n GRESIT(A)") 
end 
addEventHandler("wrongLoginUser",root,isLoginUserWrong) 
  
addEvent("succesfullyLoggedIn",true) 
function isLoginUserAndPasswordRight() 
    guiSetVisible(acc_guiWindow,false) 
    showCursor(false) 
    outputChatBox("Bine ai revenit "..playerNickName.." pe serverul Multi Role Play : Inceputul") 
end 
  
--Register Events 
addEvent("wrongRegisterUser",true) 
function isRegisterUserWrong() 
    guiSetText(register_debugOutput,"Numele este invalid \n Incearca alt nume") 
end 
addEventHandler("wrongRegisterUser",root,isRegisterUserWrong) 
  
addEvent("wrongRegisterPassword",true) 
function isRegisterPasswordWrong() 
    guiSetText(register_debugOutput,"Parola este invalida \n Incearca alta") 
end 
addEventHandler("wrongRegisterPassword",root,isRegisterPasswordWrong) 
  
addEvent("wrongRegisterAnswer",true) 
function isRegisterAnswerWrong() 
    guiSetText(register_debugOutput,"Raspunsul este invalid \n Raspunsul trebuie sa fie \n un NUMAR") 
end 
addEventHandler("wrongRegisterAnswer",root,isRegisterAnswerWrong) 
  
addEvent("userAlreadyTaken",true) 
function isUserAlreadyTaken() 
    guiSetText(register_debugOutput,"Numele acesta este luat \n Te rog incearca alt nume") 
end 
addEventHandler("userAlreadyTaken",root,isUserAlreadyTaken) 
  
addEvent("newAccountCreated",true) 
function theNewAccountHasBeenCreated() 
    guiSetVisible(acc_guiWindow,false) 
    showCursor(false) 
    outputChatBox("Bine ai venit "..playerNickName.." pe serverul Multi Role Play : Inceputul") 
end 
addEventHandler("newAccountCreated",root,theNewAccountHasBeenCreated) 

3.s_database.lua

RootNode = xmlLoadFile("accounts.xml") 
  
addEventHandler("onResourceStart",resourceRoot, 
function () 
     
    if RootNode then 
        outputDebugString("Baza de date accounts.xml a fost incarcata") 
    end 
     
end 
) 

4.s_login.validate.lua

local vaildUser = 0 
local vaidPassword = 0 
  
addEvent("logInToServer",true) 
function isAccountVaild(panelUser,panelPassword) 
    if RootNode then 
        AccountsNode = xmlNodeGetChildren(RootNode) 
        for i,node in ipairs (AccountsNode) do 
            NodeOfAccount = xmlFindChild(RootNode,"cont",tonumber(i)) 
            otherUsers = xmlNodeGetAttribute(NodeOfAccount,"nume") 
            otherPasswords = xmlNodeGetAttribute(NodeOfAccount,"parola") 
             
             
            if panelUser == tostring(otherUsers) then 
                vaildUser = 1 
                if panelPassword == tostring(otherPasswords) then 
                    vaidPassword = 1 
                end 
            end 
        end 
    end  
     
    if vaildUser == 1 and vaidPassword == 1 then 
        triggerClientEvent("succesfullyLoggedIn",resourceRoot) 
         
        xmlSaveFile(RootNode) 
    else 
        triggerClientEvent("wrongLoginUser",resourceRoot) 
  
    end 
  
    vaildUser = 0 
    vaidPassword = 0 
end 
addEventHandler("logInToServer",root,isAccountVaild) 

5.s_register.validate.lua

local vaildUser = 1 
  
addEvent("registerToServer",true) 
function createNewAccount(panelUser,panelPassword,panelAnswer) 
    if RootNode then 
        AccountsNode = xmlNodeGetChildren(RootNode) 
        for i,node in ipairs (AccountsNode) do 
            local NodeOfAccount = xmlFindChild(RootNode,"cont",i) 
            local otherUsers = xmlNodeGetAttribute(NodeOfAccount,"nume") 
            if panelUser == tostring(otherUsers) then 
                vaildUser = 0 
            end 
        end 
         
        if vaildUser == 1 then 
            if panelUser then 
                if panelPassword then 
                    if panelAnswer then 
                        local accNode = xmlCreateChild(RootNode,"cont") 
                        xmlNodeSetAttribute(accNode,"nume",panelUser) 
                        xmlNodeSetAttribute(accNode,"parola",panelPassword) 
                        xmlNodeSetAttribute(accNode,"raspuns",panelAnswer) 
                         
                        triggerClientEvent(getRootElement(),"newAccountCreated",resourceRoot) 
                         
                        xmlSaveFile(RootNode) 
                    else 
                        triggerClientEvent(getRootElement(),"wrongRegisterAnswer",resourceRoot) 
                    end 
                else 
                    triggerClientEvent(getRootElement(),"wrongRegisterPassword",resourceRoot) 
                end 
            else 
                triggerClientEvent(getRootElement(),"wrongRegisterUser",resourceRoot) 
            end 
        else 
            triggerClientEvent(getRootElement(),"userAlreadyTaken",resourceRoot) 
        end  
         
        vaildUser = 0 
    end  
     
end 
addEventHandler("registerToServer",root,createNewAccount) 

So these are the scripts (s_ = server c_ = client)

The GUI is working

The database loader is working

Problems

When i press a tab in tab panel the debugLabels (The labels which output errors) changes and it is supposet to change only if user/password is wrong

At register panel the debugLabel will output user already taken(translated) whatever i type in the EditBoxes

At login panel same error

The account dont save in accounts.xml

Link to comment

Numele sau parola este grestia = Username or password is wrong

Numele este invalid!Incearca altul = uername is invalid!Please try another one

Parola este invalida!Incearca alta = password is invalid!Please try another one

Raspunsul este invalid = answer is invalid

Numele acesta este luat ! Te rog incearca altul = Username already taken

Variable - Raspunsul = Is a var that must be set when register so you can recover your password if u forget it

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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