Maurize Posted August 25, 2011 Share Posted August 25, 2011 local Spieler = getRootElement() addEventHandler( "onResourceStart", Spieler, function() executeSQLCreateTable( "playerData", "name STRING, x FLOAT, y FLOAT, z FLOAT, r FLOAT, s INT" ) end ) addEventHandler( "onPlayerQuit", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local x, y, z = getElementPosition( source ) local rx, ry, rz = getElementRotation( source ) local s = getElementModel( source ) local playerTable = executeSQLUpdate( "playerData", "name = '" .. getAccountName( getPlayerAccount( source ) ) .. "', x = '" .. x .. "', y = '" .. y .. "', z = '" .. z .. "', r = '" .. rz .. "', s = '" .. s .. "'" ) end ) addEventHandler( "onPlayerLogin", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "name = '" .. Account .. "'", "x", "y", "z", "r", "s" ) spawnPlayer( source, playerTable[3], playerTable[4], playerTable[5], playerTable[6], playerTable[7] ) end ) Hmm only shows that there is a bad argument at spawnPlayer.. And btw someone can tell me how to check if the player is new so i can spawn him somewhere without Selectings his SQL Data which can´t be found cause he don´t got any. // If I write my variable "Spieler" without "local", can it be used in every script? so i dont have to put it in to every head of every script ? Link to comment
JR10 Posted August 25, 2011 Share Posted August 25, 2011 addEventHandler( "onPlayerLogin", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "name = '" .. Account .. "'", "x", "y", "z", "r", "s" ) if playerTable then spawnPlayer( source, playerTable[1][3], playerTable[1][4], playerTable[1][5], playerTable[1][6], playerTable[1][7] ) else -- the player is new end ) Yes, in every server sided script. Link to comment
Maurize Posted August 26, 2011 Author Share Posted August 26, 2011 addEventHandler( "onPlayerLogin", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "name = '" .. Account .. "'", "x", "y", "z", "r", "s" ) if playerTable then spawnPlayer( source, playerTable[1][3], playerTable[1][4], playerTable[1][5], playerTable[1][6], playerTable[1][7] ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) else spawnPlayer( source, 100, 100, 20, 90, 285 ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) end end ) error at > spawnPlayer( source, playerTable[1][3], playerTable[1][4], playerTable[1][5], playerTable[1][6], playerTable[1][7] ) attempt to index field ? < a nil value > Maybe an idea whats wrong? BTW: There isn´t any data from the player in the database registry.db doesnt matter how often I join and quit the game ... Link to comment
JR10 Posted August 26, 2011 Share Posted August 26, 2011 That's because you always update, and you don't insert if no rows was found. addEventHandler( "onPlayerLogin", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "name = '" .. Account .. "'", "x", "y", "z", "r", "s" ) if playerTable and #playerTable == 1 then spawnPlayer( source, playerTable[1][3], playerTable[1][4], playerTable[1][5], playerTable[1][6], playerTable[1][7] ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) else spawnPlayer( source, 100, 100, 20, 90, 285 ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) end end ) On quit: select where name = the account name, and check if it exists and #playerTable == 1 , if so update, else insert. Link to comment
Maurize Posted August 26, 2011 Author Share Posted August 26, 2011 something like this? : addEventHandler( "onPlayerQuit", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local x, y, z = getElementPosition( source ) local rx, ry, rz = getElementRotation( source ) local s = getElementModel( source ) local playerTable = executeSQLSelect ( "playerData", "name = '" .. Account .. "'", "x", "y", "z", "r", "s" ) if playerTable and #playerTable == 1 then local playerTable = executeSQLUpdate( "playerData", "name = '" .. Account .. "', x = '" .. x .. "', y = '" .. y .. "', z = '" .. z .. "', r = '" .. rz .. "', s = '" .. s .. "'" ) else local playerTable = executeSQLInsert( "playerData", "name = '" .. Account .. "', x = '" .. x .. "', y = '" .. y .. "', z = '" .. z .. "', r = '" .. rz .. "', s = '" .. s .. "'" ) end end ) Link to comment
JR10 Posted August 26, 2011 Share Posted August 26, 2011 Yes, but, insert syntax is wrong, should be values only, without the column. local playerTable = executeSQLInsert( "playerData", "'"..Account .. "','" .. x .. "','" .. y .. "','" .. z .. "','" .. rz .. "','" .. s .. "'" ) Link to comment
Maurize Posted August 26, 2011 Author Share Posted August 26, 2011 local Spieler = getRootElement() addEventHandler( "onResourceStart", Spieler, function() executeSQLCreateTable( "playerData", "name STRING, x FLOAT, y FLOAT, z FLOAT, r FLOAT, s INT" ) end ) addEventHandler( "onPlayerQuit", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "name = '" .. Account .. "'", "x", "y", "z", "r", "s" ) if playerTable and #playerTable == 1 then local x, y, z = getElementPosition( source ) local rx, ry, rz = getElementRotation( source ) local s = getElementModel( source ) local playerTable = executeSQLUpdate( "playerData", "name = '" .. Account .. "', x = '" .. x .. "', y = '" .. y .. "', z = '" .. z .. "', r = '" .. rz .. "', s = '" .. s .. "'" ) else local x, y, z = getElementPosition( source ) local rx, ry, rz = getElementRotation( source ) local s = getElementModel( source ) local playerTable = executeSQLInsert( "playerData", "'"..Account .. "','" .. x .. "','" .. y .. "','" .. z .. "','" .. rz .. "','" .. s .. "'" ) end end ) addEventHandler( "onPlayerLogin", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "name = '" .. Account .. "'", "x", "y", "z", "r", "s" ) if playerTable and #playerTable == 1 then spawnPlayer( source, playerTable[1][3], playerTable[1][4], playerTable[1][5], playerTable[1][6], playerTable[1][7] ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) else spawnPlayer( source, 1000, 1000, 50, 90, 285 ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) end end ) Nice i can find my data in database. Now only 1 problem: Every time i login, i spawn at x = 0, y = 0, z = 0 ... And he tells me: bad argument at spawnplayer. soo any idea? Link to comment
JR10 Posted August 26, 2011 Share Posted August 26, 2011 addEventHandler( "onPlayerLogin", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "*", "name = '" .. Account .. "'") if playerTable and #playerTable == 1 then spawnPlayer( source, playerTable[1][2], playerTable[1][3], playerTable[1][4], playerTable[1][5], playerTable[1][6] ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) else spawnPlayer( source, 1000, 1000, 50, 90, 285 ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) end end ) Link to comment
Maurize Posted August 26, 2011 Author Share Posted August 26, 2011 you forgot about one of " and btw again error : spawnPlayer addEventHandler( "onPlayerQuit", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local x, y, z = getElementPosition( source ) local rx, ry, rz = getElementRotation( source ) local s = getElementModel( source ) local playerTable = executeSQLSelect ( "playerData", "*", "name = '" .. Account .. "'" ) if playerTable and #playerTable == 1 then local playerTable = executeSQLUpdate( "playerData", "name = '" .. Account .. "', x = '" .. x .. "', y = '" .. y .. "', z = '" .. z .. "', r = '" .. rz .. "', s = '" .. s .. "'" ) else local playerTable = executeSQLInsert( "playerData", "'"..Account .. "','" .. x .. "','" .. y .. "','" .. z .. "','" .. rz .. "','" .. s .. "'" ) end end ) addEventHandler( "onPlayerLogin", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "*", "name = '" .. Account .. "'") if playerTable and #playerTable == 1 then spawnPlayer( source, playerTable[1][2], playerTable[1][3], playerTable[1][4], playerTable[1][5], playerTable[1][6] ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) else spawnPlayer( source, 1000, 1000, 50, 90, 285 ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) end end ) Link to comment
JR10 Posted August 26, 2011 Share Posted August 26, 2011 Where? I didn't forget anything. Try: spawnPlayer( source, playerTable[1]["x"], playerTable[1]["y"], playerTable[1]["z"], playerTable[1]["r"], playerTable[1]["s"] ) Link to comment
Maurize Posted August 26, 2011 Author Share Posted August 26, 2011 take the code and try it for yourself mate You are a much better scripter. you will see whats wrong its like that it cant get the infos out of the table cause he let me spawn on x0,y0,z0,r0,s0 ... local Spieler = getRootElement() addEventHandler( "onResourceStart", Spieler, function() executeSQLCreateTable( "playerData", "name STRING, x FLOAT, y FLOAT, z FLOAT, r FLOAT, s INT" ) end ) addEventHandler( "onPlayerQuit", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local x, y, z = getElementPosition( source ) local rx, ry, rz = getElementRotation( source ) local s = getElementModel( source ) local playerTable = executeSQLSelect ( "playerData", "*", "name = '" .. Account .. "'" ) if playerTable and #playerTable == 1 then local playerTable = executeSQLUpdate( "playerData", "name = '" .. Account .. "', x = '" .. x .. "', y = '" .. y .. "', z = '" .. z .. "', r = '" .. rz .. "', s = '" .. s .. "'" ) else local playerTable = executeSQLInsert( "playerData", "'"..Account .. "','" .. x .. "','" .. y .. "','" .. z .. "','" .. rz .. "','" .. s .. "'" ) end end ) addEventHandler( "onPlayerLogin", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "*", "name = '" .. Account .. "'") if playerTable and #playerTable == 1 then spawnPlayer( source, playerTable[1][2], playerTable[1][3], playerTable[1][4], playerTable[1][5], playerTable[1][6] ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) else spawnPlayer( source, 1000, 1000, 50, 90, 285 ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) end end ) Link to comment
JR10 Posted August 26, 2011 Share Posted August 26, 2011 Done. local Spieler = getRootElement() addEventHandler( "onResourceStart", Spieler, function() executeSQLCreateTable( "playerData", "name STRING, x FLOAT, y FLOAT, z FLOAT, r FLOAT, s INT" ) end ) addEventHandler( "onPlayerQuit", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local x, y, z = getElementPosition( source ) local rx, ry, rz = getElementRotation( source ) local s = getElementModel( source ) local playerTable = executeSQLSelect ( "playerData", "*", "name = '" .. Account .. "'" ) if playerTable and #playerTable == 1 then local playerTable = executeSQLUpdate( "playerData", "name = '" .. Account .. "', x = '" .. x .. "', y = '" .. y .. "', z = '" .. z .. "', r = '" .. rz .. "', s = '" .. s .. "'" ) else local playerTable = executeSQLInsert( "playerData", "'"..Account .. "','" .. x .. "','" .. y .. "','" .. z .. "','" .. rz .. "','" .. s .. "'" ) end end ) addEventHandler( "onPlayerLogin", Spieler, function() local Account = getAccountName( getPlayerAccount( source ) ) local playerTable = executeSQLSelect ( "playerData", "*", "name = '" .. Account .. "'") if playerTable and #playerTable == 1 then spawnPlayer( source, playerTable[1]["x"], playerTable[1]["y"], playerTable[1]["z"], playerTable[1]["r"], playerTable[1]["s"] ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) else spawnPlayer( source, 1000, 1000, 50, 90, 285 ) setCameraTarget( source, source ) fadeCamera( source, true, 1.0 ) end end ) Tested. spawnPlayer( source, playerTable[1]["x"], playerTable[1]["y"], playerTable[1]["z"], playerTable[1]["r"], playerTable[1]["s"] ) That's what I changed, same as my last post. Link to comment
Maurize Posted August 26, 2011 Author Share Posted August 26, 2011 Works fine, what was wrong? Link to comment
JR10 Posted August 26, 2011 Share Posted August 26, 2011 Not sure, but it's better using the SQL table the way I did, because this way, it's a guarantee you will get the data right. playerTable[1]["x"] Link to comment
Maurize Posted August 26, 2011 Author Share Posted August 26, 2011 okay thanks alot! ur are a pro! 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