Image Posted November 24, 2012 Share Posted November 24, 2012 Here's my code: function onClientLoginRequest(thePlayer, nickname, password) if (nickname) and (nickname~="") then if (password) and (password~="") then local query = mysql:query("SELECT * FROM `Accounts` WHERE `Username` = '" .. mysql:escapeString(nickname) .. "' AND `Password` = '" .. mysql:escapeString(password) .. "'") if (mysql:numRows(query) == 1) then local sourceAccount = getPlayerAccount(thePlayer) if not isGuestAccount(sourceAccount) then exports.box:showBoxS(thePlayer,"error","Már be vagy jelentkezve.") else local account = getAccount(nickname, password) if (account ~= false) then local data = mysql:fetchRow(query) local query = mysql:query("SELECT * FROM `Characters` WHERE `AccountID` = '" .. data[1] .. "'") if (mysql:numRows(query) > 0) then local peds = {} peds[i] = {} local rows = mysql:numRows(query) for i = 0, rows do peds[i][CharacterID] = data[1] peds[i][AccountID] = data[2] peds[i][Name] = data[3] peds[i][Gender] = data[4] peds[i][Age] = data[5] peds[i][Skin] = data[6] peds[i][PosX] = data[7] peds[i][PosY] = data[8] peds[i][PosZ] = data[9] peds[i][Dimension] = data[10] peds[i][Interior] = data[11] peds[i][Health] = data[12] peds[i][Armour] = data[13] end triggerClientEvent(thePlayer, "onSuccessLogin", getRootElement(), peds) logIn(thePlayer, account, password) exports.box:showBoxS(thePlayer,"info","Sikeresen bejelentkeztél.") else exports.box:showBoxS(thePlayer,"error","Nincs egyetlen karakter sem hozzárendelve ehhez az accounthoz. A játék megkezdése előtt mindenképpen szükséged van legalább 1 karakterre, melyet weboldalunkon tudsz elkészíteni. ([url=http://www.sa-stories.net]http://www.sa-stories.net[/url])") end else exports.box:showBoxS(thePlayer,"error","A MySQL adatbázisban és a szerver belső adatbázisában található jelszavak nem egyeznek!\nJavaslat: A probléma megoldásához kérlek vedd fel a kapcsolatot egy adminisztrátorral.") end end else exports.box:showBoxS(thePlayer,"error","Helytelen bejelentkezési adatokat adtál meg.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg jelszót.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg felhasználónevet.") end mysql:freeResult(query) end addEvent("onClientLoginRequest", true) addEventHandler("onClientLoginRequest", getRootElement(), onClientLoginRequest) And the error message: [2012-11-24 19:17:13] ERROR: account_manager\s_account_functions.lua:37: table index is nil What am i doing wrong? Link to comment
Castillo Posted November 24, 2012 Share Posted November 24, 2012 Line 37 in the script you posted is: exports.box:showBoxS(thePlayer,"error","Nincs egyetlen karakter sem hozzárendelve ehhez az accounthoz. A játék megkezdése előtt mindenképpen szükséged van legalább 1 karakterre, melyet weboldalunkon tudsz elkészíteni. ([url=http://www.sa-stories.net]http://www.sa-stories.net[/url])") Is not the right line. Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 Line 37: peds[i] = {} Link to comment
Castillo Posted November 24, 2012 Share Posted November 24, 2012 You have "peds" table defined? Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 local peds = {} E: Here's the full code. mysql = exports.database function createAccount(username, email, password) local query = mysql:query("SELECT * FROM `Accounts` WHERE `Username` = '" .. mysql:escapeString(username) .. "'") if (username) and (username~="") then if (mysql:numRows(query) == 0) or (getAccount(username)) then if (password) and (password~="") then local query = mysql:query("INSERT INTO `Accounts` (Username, Email, Password) VALUES ('" .. mysql:escapeString(username) .. "', '" .. mysql:escapeString(email) .. "', '" .. mysql:escapeString(password) .. "')") addAccount(username, password) exports.box:showBoxS ("info","Sikeresen regisztráltál, most kérlek jelentkezz be.") else exports.box:showBoxS ("error","Nem adtál meg jelszót.") end else exports.box:showBoxS ("error","A megadott felhasználónév foglalt.") end else exports.box:showBoxS ("error","Nem adtál meg felhasználónevet.") end mysql:freeResult(query) end addEvent("createAccount", true) addEventHandler("createAccount", getRootElement(), createAccount) function onClientLoginRequest(thePlayer, nickname, password) if (nickname) and (nickname~="") then if (password) and (password~="") then local query = mysql:query("SELECT * FROM `Accounts` WHERE `Username` = '" .. mysql:escapeString(nickname) .. "' AND `Password` = '" .. mysql:escapeString(password) .. "'") if (mysql:numRows(query) == 1) then local sourceAccount = getPlayerAccount(thePlayer) if not isGuestAccount(sourceAccount) then exports.box:showBoxS(thePlayer,"error","Már be vagy jelentkezve.") else local account = getAccount(nickname, password) if (account ~= false) then local data = mysql:fetchRow(query) local query = mysql:query("SELECT * FROM `Characters` WHERE `AccountID` = '" .. data[1] .. "'") if (mysql:numRows(query) > 0) then local peds = {} peds[i] = {} local rows = mysql:numRows(query) for i = 0, rows do peds[i][CharacterID] = data[1] peds[i][AccountID] = data[2] peds[i][Name] = data[3] peds[i][Gender] = data[4] peds[i][Age] = data[5] peds[i][Skin] = data[6] peds[i][PosX] = data[7] peds[i][PosY] = data[8] peds[i][PosZ] = data[9] peds[i][Dimension] = data[10] peds[i][Interior] = data[11] peds[i][Health] = data[12] peds[i][Armour] = data[13] end triggerClientEvent(thePlayer, "onSuccessLogin", getRootElement(), peds) logIn(thePlayer, account, password) exports.box:showBoxS(thePlayer,"info","Sikeresen bejelentkeztél.") else exports.box:showBoxS(thePlayer,"error","Nincs egyetlen karakter sem hozzárendelve ehhez az accounthoz. A játék megkezdése előtt mindenképpen szükséged van legalább 1 karakterre, melyet weboldalunkon tudsz elkészíteni. ([url=http://www.sa-stories.net]www.sa-stories.net[/url])") end else exports.box:showBoxS(thePlayer,"error","A MySQL adatbázisban és a szerver belső adatbázisában található jelszavak nem egyeznek!\nJavaslat: A probléma megoldásához kérlek vedd fel a kapcsolatot egy adminisztrátorral.") end end else exports.box:showBoxS(thePlayer,"error","Helytelen bejelentkezési adatokat adtál meg.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg jelszót.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg felhasználónevet.") end mysql:freeResult(query) end addEvent("onClientLoginRequest", true) addEventHandler("onClientLoginRequest", getRootElement(), onClientLoginRequest) Link to comment
Castillo Posted November 24, 2012 Share Posted November 24, 2012 peds[i] = {} local rows = mysql:numRows(query) for i = 0, rows do "i" is no where defined, it should go after the for loop, like this: local rows = mysql:numRows(query) for i = 0, rows do peds[i] = {} Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 I get the same error message. Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 mysql = exports.database function createAccount(username, email, password) local query = mysql:query("SELECT * FROM `Accounts` WHERE `Username` = '" .. mysql:escapeString(username) .. "'") if (username) and (username~="") then if (mysql:numRows(query) == 0) or (getAccount(username)) then if (password) and (password~="") then local query = mysql:query("INSERT INTO `Accounts` (Username, Email, Password) VALUES ('" .. mysql:escapeString(username) .. "', '" .. mysql:escapeString(email) .. "', '" .. mysql:escapeString(password) .. "')") addAccount(username, password) exports.box:showBoxS ("info","Sikeresen regisztráltál, most kérlek jelentkezz be.") else exports.box:showBoxS ("error","Nem adtál meg jelszót.") end else exports.box:showBoxS ("error","A megadott felhasználónév foglalt.") end else exports.box:showBoxS ("error","Nem adtál meg felhasználónevet.") end mysql:freeResult(query) end addEvent("createAccount", true) addEventHandler("createAccount", getRootElement(), createAccount) function onClientLoginRequest(thePlayer, nickname, password) if (nickname) and (nickname~="") then if (password) and (password~="") then local query = mysql:query("SELECT * FROM `Accounts` WHERE `Username` = '" .. mysql:escapeString(nickname) .. "' AND `Password` = '" .. mysql:escapeString(password) .. "'") if (mysql:numRows(query) == 1) then local sourceAccount = getPlayerAccount(thePlayer) if not isGuestAccount(sourceAccount) then exports.box:showBoxS(thePlayer,"error","Már be vagy jelentkezve.") else local account = getAccount(nickname, password) if (account ~= false) then local data = mysql:fetchRow(query) local query = mysql:query("SELECT * FROM `Characters` WHERE `AccountID` = '" .. data[1] .. "'") if (mysql:numRows(query) > 0) then local peds = {} local rows = mysql:numRows(query) for i = 0, rows do peds[i] = {} peds[i][CharacterID] = data[1] peds[i][AccountID] = data[2] peds[i][Name] = data[3] peds[i][Gender] = data[4] peds[i][Age] = data[5] peds[i][Skin] = data[6] peds[i][PosX] = data[7] peds[i][PosY] = data[8] peds[i][PosZ] = data[9] peds[i][Dimension] = data[10] peds[i][Interior] = data[11] peds[i][Health] = data[12] peds[i][Armour] = data[13] end triggerClientEvent(thePlayer, "onSuccessLogin", getRootElement(), peds) logIn(thePlayer, account, password) exports.box:showBoxS(thePlayer,"info","Sikeresen bejelentkeztél.") else exports.box:showBoxS(thePlayer,"error","Nincs egyetlen karakter sem hozzárendelve ehhez az accounthoz. A játék megkezdése előtt mindenképpen szükséged van legalább 1 karakterre, melyet weboldalunkon tudsz elkészíteni. ([url=http://www.sa-stories.net]www.sa-stories.net[/url])") end else exports.box:showBoxS(thePlayer,"error","A MySQL adatbázisban és a szerver belső adatbázisában található jelszavak nem egyeznek!\nJavaslat: A probléma megoldásához kérlek vedd fel a kapcsolatot egy adminisztrátorral.") end end else exports.box:showBoxS(thePlayer,"error","Helytelen bejelentkezési adatokat adtál meg.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg jelszót.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg felhasználónevet.") end mysql:freeResult(query) end addEvent("onClientLoginRequest", true) addEventHandler("onClientLoginRequest", getRootElement(), onClientLoginRequest) Link to comment
Castillo Posted November 24, 2012 Share Posted November 24, 2012 The error is still the same and in this line? peds[i] = {} Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 Error is still the same. But the line, where the error is, now 41. Line 41: peds[i][CharacterID] = data[1] P.S.: Sorry for my bad english. (Sometimes i use google translator) Link to comment
Castillo Posted November 24, 2012 Share Posted November 24, 2012 Try this and see what it outputs to chat: mysql = exports.database function createAccount(username, email, password) local query = mysql:query("SELECT * FROM `Accounts` WHERE `Username` = '" .. mysql:escapeString(username) .. "'") if (username) and (username~="") then if (mysql:numRows(query) == 0) or (getAccount(username)) then if (password) and (password~="") then local query = mysql:query("INSERT INTO `Accounts` (Username, Email, Password) VALUES ('" .. mysql:escapeString(username) .. "', '" .. mysql:escapeString(email) .. "', '" .. mysql:escapeString(password) .. "')") addAccount(username, password) exports.box:showBoxS ("info","Sikeresen regisztráltál, most kérlek jelentkezz be.") else exports.box:showBoxS ("error","Nem adtál meg jelszót.") end else exports.box:showBoxS ("error","A megadott felhasználónév foglalt.") end else exports.box:showBoxS ("error","Nem adtál meg felhasználónevet.") end mysql:freeResult(query) end addEvent("createAccount", true) addEventHandler("createAccount", getRootElement(), createAccount) function onClientLoginRequest(thePlayer, nickname, password) if (nickname) and (nickname~="") then if (password) and (password~="") then local query = mysql:query("SELECT * FROM `Accounts` WHERE `Username` = '" .. mysql:escapeString(nickname) .. "' AND `Password` = '" .. mysql:escapeString(password) .. "'") if (mysql:numRows(query) == 1) then local sourceAccount = getPlayerAccount(thePlayer) if not isGuestAccount(sourceAccount) then exports.box:showBoxS(thePlayer,"error","Már be vagy jelentkezve.") else local account = getAccount(nickname, password) if (account ~= false) then local data = mysql:fetchRow(query) local query = mysql:query("SELECT * FROM `Characters` WHERE `AccountID` = '" .. data[1] .. "'") if (mysql:numRows(query) > 0) then local peds = {} local rows = mysql:numRows(query) for i = 0, rows do peds[i] = {} outputChatBox ( "Index: ".. i ..": ".. tostring ( peds[i] ) ) peds[i][CharacterID] = data[1] peds[i][AccountID] = data[2] peds[i][Name] = data[3] peds[i][Gender] = data[4] peds[i][Age] = data[5] peds[i][Skin] = data[6] peds[i][PosX] = data[7] peds[i][PosY] = data[8] peds[i][PosZ] = data[9] peds[i][Dimension] = data[10] peds[i][Interior] = data[11] peds[i][Health] = data[12] peds[i][Armour] = data[13] end triggerClientEvent(thePlayer, "onSuccessLogin", getRootElement(), peds) logIn(thePlayer, account, password) exports.box:showBoxS(thePlayer,"info","Sikeresen bejelentkeztél.") else exports.box:showBoxS(thePlayer,"error","Nincs egyetlen karakter sem hozzárendelve ehhez az accounthoz. A játék megkezdése elott mindenképpen szükséged van legalább 1 karakterre, melyet weboldalunkon tudsz elkészíteni. ([url=http://www.sa-stories.net]www.sa-stories.net[/url])") end else exports.box:showBoxS(thePlayer,"error","A MySQL adatbázisban és a szerver belso adatbázisában található jelszavak nem egyeznek!\nJavaslat: A probléma megoldásához kérlek vedd fel a kapcsolatot egy adminisztrátorral.") end end else exports.box:showBoxS(thePlayer,"error","Helytelen bejelentkezési adatokat adtál meg.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg jelszót.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg felhasználónevet.") end mysql:freeResult(query) end addEvent("onClientLoginRequest", true) addEventHandler("onClientLoginRequest", getRootElement(), onClientLoginRequest) Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 1. time: Index: 0: table: 02933A48 2 time: Index: 0: table: 0282DEE0 3. time: Index: 0: table: 0290A318 4. time: Index: 0: table: 02838190 5. time: Index: 0: table: 02837120 6. time Index: 0: table: 0283CA38 It makes a new table every time when it executes. Link to comment
Castillo Posted November 24, 2012 Share Posted November 24, 2012 That's good, it has to do that. But if that works fine, then why does it say the error you said it does? Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 That's good, it has to do that.But if that works fine, then why does it say the error you said it does? I don't know. E: Can you tell me a better way to store the mysql data in dynamic arrays? I have an account, and x characters on the database. I want to link the characters to the account, and load all of them in the same time. e.g. charData[char1]["data1"] charData[char1]["data2"] ... charData[char2]["data5"] ... charData[char6]["data1"] ... charData[char x]["data x"] Eh, my english sucks. Link to comment
Castillo Posted November 24, 2012 Share Posted November 24, 2012 Are you sure it is the same error as before? Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 Are you sure it is the same error as before? Yes, i'm sure. Link to comment
Castillo Posted November 24, 2012 Share Posted November 24, 2012 peds[i][CharacterID] = data[1] peds[i][AccountID] = data[2] peds[i][Name] = data[3] peds[i][Gender] = data[4] peds[i][Age] = data[5] peds[i][Skin] = data[6] peds[i][PosX] = data[7] peds[i][PosY] = data[8] peds[i][PosZ] = data[9] peds[i][Dimension] = data[10] peds[i][Interior] = data[11] peds[i][Health] = data[12] peds[i][Armour] = data[13] That's the problem, I think you wanted to do this: peds[i]["CharacterID"] = data[1] peds[i]["AccountID"] = data[2] peds[i]["Name"] = data[3] peds[i]["Gender"] = data[4] peds[i]["Age"] = data[5] peds[i]["Skin"] = data[6] peds[i]["PosX"] = data[7] peds[i]["PosY"] = data[8] peds[i]["PosZ"] = data[9] peds[i]["Dimension"] = data[10] peds[i]["Interior"] = data[11] peds[i]["Health"] = data[12] peds[i]["Armour"] = data[13] Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 [2012-11-24 22:18:14] ERROR: Client triggered serverside event onClientLoginRequest, but event is not added serverside mysql = exports.database function createAccount(username, email, password) local query = mysql:query("SELECT * FROM `Accounts` WHERE `Username` = '" .. mysql:escapeString(username) .. "'") if (username) and (username~="") then if (mysql:numRows(query) == 0) or (getAccount(username)) then if (password) and (password~="") then local query = mysql:query("INSERT INTO `Accounts` (Username, Email, Password) VALUES ('" .. mysql:escapeString(username) .. "', '" .. mysql:escapeString(email) .. "', '" .. mysql:escapeString(password) .. "')") addAccount(username, password) exports.box:showBoxS ("info","Sikeresen regisztráltál, most kérlek jelentkezz be.") else exports.box:showBoxS ("error","Nem adtál meg jelszót.") end else exports.box:showBoxS ("error","A megadott felhasználónév foglalt.") end else exports.box:showBoxS ("error","Nem adtál meg felhasználónevet.") end mysql:freeResult(query) end addEvent("createAccount", true) addEventHandler("createAccount", getRootElement(), createAccount) function onClientLoginRequest(thePlayer, nickname, password) if (nickname) and (nickname~="") then if (password) and (password~="") then local query = mysql:query("SELECT * FROM `Accounts` WHERE `Username` = '" .. mysql:escapeString(nickname) .. "' AND `Password` = '" .. mysql:escapeString(password) .. "'") if (mysql:numRows(query) == 1) then local sourceAccount = getPlayerAccount(thePlayer) if not isGuestAccount(sourceAccount) then exports.box:showBoxS(thePlayer,"error","Már be vagy jelentkezve.") else local account = getAccount(nickname, password) if (account ~= false) then local data = mysql:fetchRow(query) local query = mysql:query("SELECT * FROM `Characters` WHERE `AccountID` = '" .. data[1] .. "'") if (mysql:numRows(query) > 0) then local peds = {} local rows = mysql:numRows(query) for i = 0, rows do peds[i] = {} outputChatBox ( "Index: ".. i ..": ".. tostring ( peds[i] ) ) peds[i]["CharacterID"] = data[1] peds[i]["AccountID"] = data[2] peds[i]["Name"] = data[3] peds[i]["Gender"] = data[4] peds[i]["Age"] = data[5] peds[i]["Skin"] = data[6] peds[i]["PosX"] = data[7] peds[i]["PosY"] = data[8] peds[i]["PosZ"] = data[9] peds[i]["Dimension"] = data[10] peds[i]["Interior"] = data[11] peds[i]["Health"] = data[12] peds[i]["Armour"] = data[13] triggerClientEvent(thePlayer, "onSuccessLogin", getRootElement(), peds) logIn(thePlayer, account, password) exports.box:showBoxS(thePlayer,"info","Sikeresen bejelentkeztél.") else exports.box:showBoxS(thePlayer,"error","Nincs egyetlen karakter sem hozzárendelve ehhez az accounthoz. A játék megkezdése elott mindenképpen szükséged van legalább 1 karakterre, melyet weboldalunkon tudsz elkészíteni. ([url=http://www.sa-stories.net]http://www.sa-stories.net[/url])") end else exports.box:showBoxS(thePlayer,"error","A MySQL adatbázisban és a szerver belso adatbázisában található jelszavak nem egyeznek!\nJavaslat: A probléma megoldásához kérlek vedd fel a kapcsolatot egy adminisztrátorral.") end end else exports.box:showBoxS(thePlayer,"error","Helytelen bejelentkezési adatokat adtál meg.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg jelszót.") end else exports.box:showBoxS(thePlayer,"error","Nem adtál meg felhasználónevet.") end mysql:freeResult(query) end addEvent("onClientLoginRequest", true) addEventHandler("onClientLoginRequest", getRootElement(), onClientLoginRequest) Line 72-73: addEvent("onClientLoginRequest", true) addEventHandler("onClientLoginRequest", getRootElement(), onClientLoginRequest) Link to comment
Castillo Posted November 24, 2012 Share Posted November 24, 2012 You removed the 'end' before: triggerClientEvent(thePlayer, "onSuccessLogin", getRootElement(), peds) Link to comment
Image Posted November 24, 2012 Author Share Posted November 24, 2012 My mistake. It works. Thank you very much. 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