kieran Posted October 8, 2017 Share Posted October 8, 2017 I have been messing with a login panel I found on the community, made my own GUI since the one it had didn't center. The problem is, the text from the edit box's won't save to xml file, here is what I have. Client Spoiler Login_window = {} EnableMTAControlsOnLogin = false function LoginPanel() if not(isElement(Login_window)) then toggleAllControls(EnableMTAControlsOnLogin) local screenW, screenH = guiGetScreenSize() Login_window = guiCreateWindow((screenW - 462) / 2, (screenH - 225) / 2, 462, 225, "Login", false) guiSetAlpha(Login_window,1) guiWindowSetMovable(Login_window,false) guiWindowSetSizable(Login_window, false) guiSetProperty(Login_window, "CaptionColour", "FF201BE3") edit_user = guiCreateEdit(103, 62, 257, 25, "", false, Login_window) edit_pass = guiCreateEdit(103, 109, 257, 25, "", false, Login_window) checkbox_save = guiCreateCheckBox(360, 110, 91, 17, "Save", false, false, Login_window) button_login = guiCreateButton(103, 156, 116, 51, "Login", false, Login_window) button_reg = guiCreateButton(244, 156, 116, 51, "Register", false, Login_window) staticimage_user = guiCreateStaticImage(229, 0, 32, 26, "images/guy.png", false, edit_user) staticimage_pass = guiCreateStaticImage(227, 0, 34, 25, "images/lock.png", false, edit_pass) label_top = guiCreateLabel(168, 26, 127, 16, "Please log in below.", false, Login_window) guiSetFont(label_top, "clear-normal") guiLabelSetColor(label_top, 255, 0, 0) label_log = guiCreateLabel(200, 45, 55, 15, "Username", false, Login_window) guiLabelSetColor(label_log, 0, 255, 0) label_reg = guiCreateLabel(201, 90, 55, 15, "Password", false, Login_window) guiLabelSetColor(label_reg, 0, 255, 0) guiSetAlpha(Login_window,0.8) guiWindowSetMovable(Login_window,true) guiWindowSetSizable(Login_window, false) guiSetProperty(Login_window, "CaptionColour", "FF201BE3") guiEditSetMaxLength ( edit_user,25) guiEditSetMaxLength ( edit_pass,25) guiEditSetMasked ( edit_pass, true ) guiSetVisible(Login_window,true) showCursor(true) setPlayerHudComponentVisible ( "all", false) local username, password = loadLoginFromXML() if not( username == "" or password == "") then guiCheckBoxSetSelected ( checkbox_save, true ) guiSetText ( edit_user, tostring(username)) guiSetText ( edit_pass, tostring(password)) else guiCheckBoxSetSelected ( checkbox_save, false ) guiSetText ( edit_user, tostring(username)) guiSetText ( edit_pass, tostring(password)) end addEventHandler("onClientGUIClick",button_login,onClickLogin) addEventHandler("onClientGUIClick",button_reg,onClickReg) end end function start_cl_resource() LoginPanel() end addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),start_cl_resource) --XML Loading and Saving function loadLoginFromXML() local xml_save_log_File = xmlLoadFile ("files/xml/userdata.xml") if not xml_save_log_File then xml_save_log_File = xmlCreateFile("files/xml/userdata.xml", "login") end local usernameNode = xmlFindChild (xml_save_log_File, "username", 0) local passwordNode = xmlFindChild (xml_save_log_File, "password", 0) if usernameNode and passwordNode then return xmlNodeGetValue(usernameNode), xmlNodeGetValue(passwordNode) else return "", "" end xmlUnloadFile ( xml_save_log_File ) end function saveLoginToXML(username, password) local xml_save_log_File = xmlLoadFile ("files/xml/userdata.xml") if not xml_save_log_File then xml_save_log_File = xmlCreateFile("files/xml/userdata.xml", "login") end if (username ~= "") then local usernameNode = xmlFindChild (xml_save_log_File, "username", 0) if not usernameNode then usernameNode = xmlCreateChild(xml_save_log_File, "username") end xmlNodeSetValue (usernameNode, tostring(username)) end if (password ~= "") then local passwordNode = xmlFindChild (xml_save_log_File, "password", 0) if not passwordNode then passwordNode = xmlCreateChild(xml_save_log_File, "password") end xmlNodeSetValue (passwordNode, tostring(password)) end xmlSaveFile(xml_save_log_File) xmlUnloadFile (xml_save_log_File) end addEvent("saveLoginToXML", true) addEventHandler("saveLoginToXML", getRootElement(), saveLoginToXML) function resetSaveXML() local xml_save_log_File = xmlLoadFile ("files/xml/userdata.xml") if not xml_save_log_File then xml_save_log_File = xmlCreateFile("files/xml/userdata.xml", "login") end if (username ~= "") then local usernameNode = xmlFindChild (xml_save_log_File, "username", 0) if not usernameNode then usernameNode = xmlCreateChild(xml_save_log_File, "username") end end if (password ~= "") then local passwordNode = xmlFindChild (xml_save_log_File, "password", 0) if not passwordNode then passwordNode = xmlCreateChild(xml_save_log_File, "password") end xmlNodeSetValue (passwordNode, "") end xmlSaveFile(xml_save_log_File) xmlUnloadFile (xml_save_log_File) end addEvent("resetSaveXML", true) addEventHandler("resetSaveXML", getRootElement(), resetSaveXML) function onClickLogin(button,state) if(button == "left" and state == "up") then if (source == button_login) then username = guiGetText(edit_user) password = guiGetText(edit_pass) if guiCheckBoxGetSelected ( checkbox_save ) == true then checksave = true else checksave = false end triggerServerEvent("onRequestLogin",getLocalPlayer(),username,password) end end end function onClickReg(button,state) if(button == "left" and state == "up") then if (source == button_reg) then username = guiGetText(edit_user) password = guiGetText(edit_pass) triggerServerEvent("onRequestRegister",getLocalPlayer(),username,password) end end end function hideLoginWindow() guiSetInputEnabled(false) guiSetVisible(Login_window, false) destroyElement(Login_window) Login_window = nil showCursor(false) setPlayerHudComponentVisible ( "all", true) toggleAllControls(true) end addEvent("hideLoginWindow", true) addEventHandler("hideLoginWindow", getRootElement(), hideLoginWindow) Server Spoiler function PlayerLogin(username,password,checksave) if not (username == "") then if not (password == "") then local account = getAccount ( username, password ) if ( account ~= false ) then logIn(source, account, password) triggerClientEvent (source,"hideLoginWindow",getRootElement()) if checksave == true then triggerClientEvent(source,"saveLoginToXML",getRootElement(),username,password) else triggerClientEvent(source,"resetSaveXML",getRootElement(),username,password) end end end end end addEvent("onRequestLogin",true) addEventHandler("onRequestLogin",getRootElement(),PlayerLogin) function registerPlayer(username,password,checksave) if not (username == "") then if not (password == "") then local account = getAccount (username,password) if (account == false) then local accountAdded = addAccount(tostring(username),tostring(password)) if (accountAdded) then outputChatBox ("#FF0000* #00FF00You have sucessfuly registered! [Username: #FFFFFF" .. username .. " #00FF00| Password: #FFFFFF" .. password .. "#00FF00 ]",source,255,255,255,true ) triggerClientEvent (source,"hideLoginWindow",getRootElement()) end end end end end addEvent("onRequestRegister",true) addEventHandler("onRequestRegister",getRootElement(),registerPlayer) --Hide login if player logs in with bind function hide_panel() triggerClientEvent (source,"hideLoginWindow",getRootElement()) end addEventHandler("onPlayerLogin", getRootElement(), hide_panel) Thanks for help, looked over code and it all looks like the working resource. Link to comment
WorthlessCynomys Posted October 8, 2017 Share Posted October 8, 2017 Did the resource work with the original GUI? Link to comment
kieran Posted October 8, 2017 Author Share Posted October 8, 2017 (edited) 25 minutes ago, Randomly said: Did the resource work with the original GUI? Yeah, here is the original. Server(Original) Spoiler function PlayerLogin(username,password,checksave) if not (username == "") then if not (password == "") then local account = getAccount ( username, password ) if ( account ~= false ) then logIn(source, account, password) triggerClientEvent (source,"hideLoginWindow",getRootElement()) if checksave == true then triggerClientEvent(source,"saveLoginToXML",getRootElement(),username,password) else triggerClientEvent(source,"resetSaveXML",getRootElement(),username,password) end else triggerClientEvent(source,"set_warning_text",getRootElement(),"Login","Wrong username and/or password!") end else triggerClientEvent(source,"set_warning_text",getRootElement(),"Login","Please enter your password!") end else triggerClientEvent(source,"set_warning_text",getRootElement(),"Login","Please enter your username!") end end addEvent("onRequestLogin",true) addEventHandler("onRequestLogin",getRootElement(),PlayerLogin) function registerPlayer(username,password,passwordConfirm) if not (username == "") then if not (password == "") then if not (passwordConfirm == "") then if password == passwordConfirm then local account = getAccount (username,password) if (account == false) then local accountAdded = addAccount(tostring(username),tostring(password)) if (accountAdded) then outputChatBox ("#FF0000* #00FF00You have sucessfuly registered! [Username: #FFFFFF" .. username .. " #00FF00| Password: #FFFFFF" .. password .. "#00FF00 ]",source,255,255,255,true ) else triggerClientEvent(source,"set_warning_text",getRootElement(),"Register","Error ocurred. Choose a different username/password.") end else triggerClientEvent(source,"set_warning_text",getRootElement(),"Register","An account with this username already exists") end else triggerClientEvent(source,"set_warning_text",getRootElement(),"Register","Passwords do not match") end else triggerClientEvent(source,"set_warning_text",getRootElement(),"Register","Please confirm your password") end else triggerClientEvent(source,"set_warning_text",getRootElement(),"Register","Please enter a password") end else triggerClientEvent(source,"set_warning_text",getRootElement(),"Register","Please enter a username you would like to register") end end addEvent("onRequestRegister",true) addEventHandler("onRequestRegister",getRootElement(),registerPlayer) Client(Original) Spoiler wdwLogin_Pannel = {} tabPannel_Main = {} tab_Login = {} tab_Register = {} --Settings blackLoginScreen = false --True/false Black screen, while player login... blackScreenTime = 0 --Time to complete disappearance of the black screen in seconds. GuestEnable = false --Can a Player play as Guest, or no. [true/false] EnableMTAControlsOnLogin = false --Set false to not open the chat when you press "t" on fields, for example. [true/false] function open_log_reg_pannel() if not(isElement(wdwLogin_Pannel)) then if blackLoginScreen == true then fadeCamera(false,0,0,0,0) end toggleAllControls(EnableMTAControlsOnLogin) wdwLogin_Pannel = guiCreateWindow(434,276,488,213,"Xperia^ Login",false) guiSetAlpha(wdwLogin_Pannel,1) guiWindowSetMovable(wdwLogin_Pannel,true) guiWindowSetSizable(wdwLogin_Pannel,false) tabPannel_Main = guiCreateTabPanel(9,25,470,179,false,wdwLogin_Pannel) tab_Login = guiCreateTab("Login ",tabPannel_Main) lbl_Login = guiCreateLabel(66,24,175,26,"Login:",false,tab_Login) guiSetFont(lbl_Login,"default-bold-small") edit_Login = guiCreateEdit(133,18,301,27,"",false,tab_Login) edit_password = guiCreateEdit(133,56,301,27,"",false,tab_Login) guiEditSetMaxLength ( edit_Login,25) guiEditSetMaxLength ( edit_password,25) guiEditSetMasked ( edit_password, true ) lbl_Password = guiCreateLabel(66,62,175,26,"Register:",false,tab_Login) guiSetFont(lbl_Password,"default-bold-small") checkbox_save = guiCreateCheckBox(23,106,91,17,"Save",false,false,tab_Login) btn_Login = guiCreateButton(132,95,304,41,"Login",false,tab_Login) guiSetFont(btn_Login,"default-bold-small") login_tab_error_msg = guiCreateLabel(0,112,350,25,"Error_login_tab",false,tab_Login) guiLabelSetColor(login_tab_error_msg,255,0,0) guiLabelSetVerticalAlign(login_tab_error_msg,"center") guiLabelSetHorizontalAlign(login_tab_error_msg,"center",false) guiSetFont(login_tab_error_msg,"default-bold-small") --Guest func if GuestEnable == true then btnGuest = guiCreateButton(29,168,94,32,"Play as Guest",false,tab_Login) guiSetFont(btnGuest,"default-small") guiSetVisible(btnGuest,true) else if isElement(btnGuest) then guiSetVisible(btnGuest,false) end btnGuest = nil end tab_Register = guiCreateTab("Register ",tabPannel_Main) lbl_account_name = guiCreateLabel(37,18,216,31,"Account name:",false,tab_Register) guiSetFont(lbl_account_name,"default-bold-small") edit_account_name = guiCreateEdit(158,10,293,29,"",false,tab_Register) lbl__reg_tab_password = guiCreateLabel(37,58,216,31,"Password:",false,tab_Register) guiSetFont(lbl__reg_tab_password,"default-bold-small") edit__reg_tab_password = guiCreateEdit(158,49,293,29,"",false,tab_Register) edit__reg_tab_Repassword = guiCreateEdit(158,87,293,29,"",false,tab_Register) guiEditSetMaxLength ( edit__reg_tab_Repassword,25) lvl_reg_tab_Repassword = guiCreateLabel(37,94,216,31,"Repeat password:",false,tab_Register) guiSetFont(lvl_reg_tab_Repassword,"default-bold-small") btn_reg_tab_register = guiCreateButton(35,120,418,27,"Register",false,tab_Register) guiSetFont(btn_reg_tab_register,"default-bold-small") reg_tab_error_msg = guiCreateLabel(0,170,350,31,"Error_reg_ttab",false,tab_Register) guiLabelSetColor(reg_tab_error_msg,255,20,0) guiLabelSetVerticalAlign(reg_tab_error_msg,"center") guiLabelSetHorizontalAlign(reg_tab_error_msg,"center",false) guiSetFont(reg_tab_error_msg,"default-bold-small") guiEditSetMasked(edit__reg_tab_password, true) guiEditSetMasked(edit__reg_tab_Repassword, true) guiSetVisible(wdwLogin_Pannel,true) --guiSetInputEnabled(true) showCursor(true) --Изменение надписей: guiSetText(reg_tab_error_msg, "") --Поле ошибки в Reg табе guiSetText(login_tab_error_msg, "") --Поле ошибки в Login табе local username, password = loadLoginFromXML() if not( username == "" or password == "") then guiCheckBoxSetSelected ( checkbox_save, true ) guiSetText ( edit_Login, tostring(username)) guiSetText ( edit_password, tostring(password)) else guiCheckBoxSetSelected ( checkbox_save, false ) guiSetText ( edit_Login, tostring(username)) guiSetText ( edit_password, tostring(password)) end --Эвенты addEventHandler("onClientGUIClick",btn_Login,onClickBtnLogin) addEventHandler("onClientGUIClick",btn_reg_tab_register,onClickBtnRegister) if GuestEnable == true then addEventHandler("onClientGUIClick",btnGuest,onClickGuest) end --else --destroyElement(wdwLogin_Pannel) --guiSetInputEnabled(false) --wdwLogin_Pannel = nil --showCursor(false) end end function start_cl_resource() --При старте open_log_reg_pannel() end addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),start_cl_resource) function loadLoginFromXML() --Загрузка логина и пароля из XML local xml_save_log_File = xmlLoadFile ("files/xml/userdata.xml") if not xml_save_log_File then xml_save_log_File = xmlCreateFile("files/xml/userdata.xml", "login") end local usernameNode = xmlFindChild (xml_save_log_File, "username", 0) local passwordNode = xmlFindChild (xml_save_log_File, "password", 0) if usernameNode and passwordNode then return xmlNodeGetValue(usernameNode), xmlNodeGetValue(passwordNode) else return "", "" end xmlUnloadFile ( xml_save_log_File ) end function saveLoginToXML(username, password) --Сохрание логина и пароля в XML local xml_save_log_File = xmlLoadFile ("files/xml/userdata.xml") if not xml_save_log_File then xml_save_log_File = xmlCreateFile("files/xml/userdata.xml", "login") end if (username ~= "") then local usernameNode = xmlFindChild (xml_save_log_File, "username", 0) if not usernameNode then usernameNode = xmlCreateChild(xml_save_log_File, "username") end xmlNodeSetValue (usernameNode, tostring(username)) end if (password ~= "") then local passwordNode = xmlFindChild (xml_save_log_File, "password", 0) if not passwordNode then passwordNode = xmlCreateChild(xml_save_log_File, "password") end xmlNodeSetValue (passwordNode, tostring(password)) end xmlSaveFile(xml_save_log_File) xmlUnloadFile (xml_save_log_File) end addEvent("saveLoginToXML", true) addEventHandler("saveLoginToXML", getRootElement(), saveLoginToXML) function resetSaveXML() --Сохрание логина и пароля в XML local xml_save_log_File = xmlLoadFile ("files/xml/userdata.xml") if not xml_save_log_File then xml_save_log_File = xmlCreateFile("files/xml/userdata.xml", "login") end if (username ~= "") then local usernameNode = xmlFindChild (xml_save_log_File, "username", 0) if not usernameNode then usernameNode = xmlCreateChild(xml_save_log_File, "username") end end if (password ~= "") then local passwordNode = xmlFindChild (xml_save_log_File, "password", 0) if not passwordNode then passwordNode = xmlCreateChild(xml_save_log_File, "password") end xmlNodeSetValue (passwordNode, "") end xmlSaveFile(xml_save_log_File) xmlUnloadFile (xml_save_log_File) end addEvent("resetSaveXML", true) addEventHandler("resetSaveXML", getRootElement(), resetSaveXML) function onClickBtnLogin(button,state) --При нажатии на кнопку Login if(button == "left" and state == "up") then if (source == btn_Login) then username = guiGetText(edit_Login) password = guiGetText(edit_password) if guiCheckBoxGetSelected ( checkbox_save ) == true then checksave = true else checksave = false end triggerServerEvent("onRequestLogin",getLocalPlayer(),username,password,checksave) end end end function onClickBtnRegister(button,state) --При нажатии на кнопку Register and Cofirm if(button == "left" and state == "up") then if (source == btn_reg_tab_register) then username = guiGetText(edit_account_name) password = guiGetText(edit__reg_tab_password) passwordConfirm = guiGetText(edit__reg_tab_Repassword) triggerServerEvent("onRequestRegister",getLocalPlayer(),username,password,passwordConfirm) end end end function Error_msg(Tab, Text) if Tab == "Login" then guiSetText(login_tab_error_msg, tostring(Text)) setTimer(function() guiSetText(login_tab_error_msg, "") end,6000,1) elseif Tab == "Register" then guiSetText(reg_tab_error_msg, tostring(Text)) setTimer(function() guiSetText(reg_tab_error_msg, "") end,6000,1) end end addEvent("set_warning_text",true) addEventHandler("set_warning_text",getRootElement(),Error_msg) function onClickGuest(button,state) if(button == "left" and state == "up") then if (source == btnGuest) then guiSetVisible(wdwLogin_Pannel, false) guiSetInputEnabled(false) showCursor(false) if blackLoginScreen == true then fadeCamera(true,blackScreenTime) end end end end function hideLoginWindow() --Функция закрытия логин панели guiSetInputEnabled(false) guiSetVisible(wdwLogin_Pannel, false) destroyElement(wdwLogin_Pannel) wdwLogin_Pannel = nil showCursor(false) removeEventHandler("onClientGUIClick",btn_Login,onClickBtnLogin) if GuestEnable == true then removeEventHandler("onClientGUIClick",btnGuest,onClickGuest) end if blackLoginScreen == true then fadeCamera(true,blackScreenTime) end toggleAllControls(true) end addEvent("hideLoginWindow", true) addEventHandler("hideLoginWindow", getRootElement(), hideLoginWindow) You can see that a tab panel is used originally, which is not that nice on a login panel... And also there are error messages if you put wrong name/password in which I removed. Edited October 8, 2017 by kieran Link to comment
WorthlessCynomys Posted October 8, 2017 Share Posted October 8, 2017 So I found a problem. When you trigger the onRequestLogin, you send the localPlayer, the username and the password but the server side needs the username, the password and the checkbox state. Basically it handles username as the player element, password as the username and checkbox state as the password. 1 Link to comment
kieran Posted October 8, 2017 Author Share Posted October 8, 2017 11 minutes ago, Randomly said: So I found a problem. When you trigger the onRequestLogin, you send the localPlayer, the username and the password but the server side needs the username, the password and the checkbox state. Basically it handles username as the player element, password as the username and checkbox state as the password. My hero thanks, can't believe I missed that. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now