Quebec Posted August 22, 2021 Share Posted August 22, 2021 (edited) Hey, I'm trying to make a very basic login system just for learning and I'm trying to pass the player to the function but i don't know how. Error I get is: line 25 "Bad argument @ setElementData: [Expected element as argument 1, got nil]". Here's the code: addEvent('accountsystem:login', true) addEventHandler('accountsystem:login', root, function(thePlayer, username, password) if not username or not password then return false end local queryCheck = dbQuery(db, "SELECT * FROM `accounts` WHERE `username` = '" .. username .. "'") local result = dbPoll(queryCheck, -1) if result then for k, row in ipairs(result)do local hashedPassword = row["password"] if passwordVerify(password, hashedPassword) then outputChatBox("Ai fost autentificat cu succes!", thePlayer, 100, 255, 100) setElementData(thePlayer, "account:id", row["id"]) setElementData(thePlayer, "account:ip", row["ip"]) setElementData(thePlayer, "account:username", row["username"]) spawnPlayer(thePlayer, 0, 5, 5) triggerClientEvent(thePlayer, 'accountsystem:schimbacamera', thePlayer) else outputChatBox("Contul/Parola sunt incorecte!", thePlayer, 255, 100, 100) end end end end) Edited August 22, 2021 by Quebec Link to comment
The_GTA Posted August 22, 2021 Share Posted August 22, 2021 Please post the full code, especially the part where you trigger the event on the clientside. Link to comment
Quebec Posted August 22, 2021 Author Share Posted August 22, 2021 8 minutes ago, The_GTA said: Please post the full code, especially the part where you trigger the event on the clientside. Client side script: addEventHandler('onClientResourceStart', root, function() setCameraMatrix (0, 0, 100, 0, 100, 50) fadeCamera(true) end) function validateRegisterData(command, username, password) if username == "" or password == "" then return outputChatBox("SINTAXA:", 255, 100, 100) end if string.len(username) < 3 then return outputChatBox("Numele trebuie sa fie mai mare de 3 caractere!", 255, 100, 100) elseif string.len(password) < 6 then return outputChatBox("Parola trebuie sa fie mai mare de 6 caractere!", 255, 100, 100) end triggerServerEvent('accountsystem:register', localPlayer, localPlayer, username, password) end addCommandHandler('registeraccount', validateRegisterData) function validateLoginData(command, username, password) if username == "" or password == "" then return outputChatBox("Umple toate spatiile!", 255, 100, 100) end triggerServerEvent('accountsystem:login', localPlayer, loginPlayer, username, password) end addCommandHandler('loginaccount', validateLoginData) addEvent('accountsystem:schimbacamera', true) addEventHandler('accountsystem:schimbacamera', root, function() setCameraTarget(localPlayer, localPlayer) end) Server side script: local db = exports.mysqlconnection:getConnection() addEvent('accountsystem:register', true) addEventHandler('accountsystem:register', root, function(thePlayer, username, password) if not username or not password then return false end local queryCheck = dbQuery(db, "SELECT * FROM `accounts` WHERE `username` = '" .. username .. "'") local result = dbPoll(queryCheck, -1) if #result > 0 then return outputChatBox("Acest nume este deja folosit!", thePlayer) end local playerIP = getPlayerIP(thePlayer) local hash = passwordHash(password, "bcrypt", {}) dbExec(db, "INSERT INTO `accounts` (`username`, `password`, `ip`) VALUES (?, ?, ?)", username, hash, playerIP) outputChatBox("Contul a fost creat cu succes!", thePlayer, 100, 255, 100) end) addEvent('accountsystem:login', true) addEventHandler('accountsystem:login', root, function(thePlayer, username, password) if not username or not password then return false end local queryCheck = dbQuery(db, "SELECT * FROM `accounts` WHERE `username` = '" .. username .. "'") local result = dbPoll(queryCheck, -1) if result then for k, row in ipairs(result) do local hashedPassword = row["password"] setElementData(thePlayer, "account:id", row["id"]) setElementData(thePlayer, "account:ip", row["ip"]) setElementData(thePlayer, "account:username", row["username"]) if passwordVerify(password, hashedPassword) then outputChatBox("Ai fost autentificat cu succes!", thePlayer, 100, 255, 100) spawnPlayer(thePlayer, 0, 5, 5) triggerClientEvent(thePlayer, 'accountsystem:schimbacamera', thePlayer) else outputChatBox("Contul/Parola sunt incorecte!", thePlayer, 255, 100, 100) end end else return outputChatBox("Acest cont nu exista!", thePlayer, 255, 100, 100) end end) Link to comment
The_GTA Posted August 22, 2021 Share Posted August 22, 2021 To answer your original question, please take a look at this code: function validateLoginData(command, username, password) if username == "" or password == "" then return outputChatBox("Umple toate spatiile!", 255, 100, 100) end triggerServerEvent('accountsystem:login', localPlayer, loginPlayer, username, password) end addCommandHandler('loginaccount', validateLoginData) The third argument to triggerServerEvent, the global variable "loginPlayer", is not defined anywhere. Did you mean to use "localPlayer"? 1 Link to comment
Quebec Posted August 22, 2021 Author Share Posted August 22, 2021 10 minutes ago, The_GTA said: To answer your original question, please take a look at this code: function validateLoginData(command, username, password) if username == "" or password == "" then return outputChatBox("Umple toate spatiile!", 255, 100, 100) end triggerServerEvent('accountsystem:login', localPlayer, loginPlayer, username, password) end addCommandHandler('loginaccount', validateLoginData) The third argument to triggerServerEvent, the global variable "loginPlayer", is not defined anywhere. Did you mean to use "localPlayer"? Didn't even notice that, it's a typo. Lemme check if this works. 12 minutes ago, The_GTA said: To answer your original question, please take a look at this code: function validateLoginData(command, username, password) if username == "" or password == "" then return outputChatBox("Umple toate spatiile!", 255, 100, 100) end triggerServerEvent('accountsystem:login', localPlayer, loginPlayer, username, password) end addCommandHandler('loginaccount', validateLoginData) The third argument to triggerServerEvent, the global variable "loginPlayer", is not defined anywhere. Did you mean to use "localPlayer"? Works like a charm, thanks a lot! 1 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