Jump to content

SQL Question.


Maurize

Recommended Posts

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

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

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

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

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

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

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

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

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