Jump to content

I need some help


Image

Recommended Posts

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

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
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
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

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

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
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. :D

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. :D

Link to comment
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

[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

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...