diff options
Diffstat (limited to 'gamemode/core/database/sv_setup.lua')
| -rw-r--r-- | gamemode/core/database/sv_setup.lua | 67 |
1 files changed, 19 insertions, 48 deletions
diff --git a/gamemode/core/database/sv_setup.lua b/gamemode/core/database/sv_setup.lua index 0d0eb74..2fb7ed7 100644 --- a/gamemode/core/database/sv_setup.lua +++ b/gamemode/core/database/sv_setup.lua @@ -2,10 +2,8 @@ nrequire("sv_mysqlite.lua") local config = nrequire("config/sv_sql.lua") local data = nrequire("config/sv_newplayer.lua") -local fn = nrequire("fn.lua") -local col = nrequire("colortheme.lua") -local inv = nrequire("inventory/inventory.lua") -local track = nrequire("sv_invtracker.lua") +local col = nrequire("config/colortheme.lua") +local q = nrequire("core/database/sv_queries.lua") local sql = {} --Setup the database if it's not already @@ -14,7 +12,7 @@ CREATE TABLE IF NOT EXISTS playerdata(SteamID bigint primary key, PlayerData jso --Create a new player local create_player_query = [[ -INSERT INTO playerdata (`SteamID`,`PlayerData`,`MetaData`) VALUES(%.0f,%q,%q)]] +INSERT INTO playerdata (`SteamID`,`PlayerData`,`MetaData`) VALUES(%.0f,'%s','%s')]] --Get a player's data from the database local fetch_player_query = [[ @@ -22,48 +20,14 @@ SELECT PlayerData, MetaData FROM playerdata WHERE SteamID=%.0f ]] local save_player_query = [[ -UPDATE playerdata SET MetaData=%q PlayerData=%q WHERE SteamID=%.0f +UPDATE playerdata SET MetaData="%s" PlayerData="%s" WHERE SteamID=%.0f ]] -local s_fmt = function(fmt,...) - local args = {...} - fn.map(args,MySQLite.SQLStr) - return string.format(fmt,unpack(args)) -end - local function q_fai(err,query) - MsgC(col.console.red,string.format("Error executing %q, error:%s",query,err)) + MsgC(col.console.red,string.format("Error executing %s, error:%s",query,err)) end -local function serialize_player(ply) - local sdata = {} - local invs = {} - for k,v in pairs(ply.data.inventories) do - invs[k] = {v.Name,v:Serialize()} - end - sdata.inventories = invs - sdata.skills = ply.data.skills - sdata.quests = ply.data.quests - sdata.prayers = ply.data.prayers - return util.TableToJSON(sdata) -end -local function deserialize_player(ply,str) - print("Deseriailizeing player",ply," with ", str) - track.ClearInventories(ply) - local tbl = util.JSONToTable(str) - local invs = tbl.inventories - print("Inventories was", invs) - PrintTable(invs) - for k,v in pairs(invs) do - print("Giveing inventory",v[1],v[2]) - track.GiveInventoryWithData(ply,v[1],v[2]) - end - ply.data.skills = tbl.skills or {} - ply.data.quests = tbl.quests or {} - ply.data.prayers = tbl.prayers or {} - track.SendPlayerData(ply) -end local function connect() print("Connecting to the database...") @@ -81,7 +45,7 @@ connect() --Retruns (PlayerData, MetaData) or nil function sql.GetPlayerData(ply) local s64 = ply:SteamID64() - local q_str = s_fmt(fetch_player_query,s64) + local q_str = q.s_fmt(fetch_player_query,s64) local q_suc = function(res,li) print("Got player's data:",res,type(res)) if res == nil then @@ -101,13 +65,18 @@ function sql.GetPlayerData(ply) return end print("We were on the right server") - local _,_,x,y,z = mtbl.lastlocation:find("([%d%.]+) ([%d%.]+) ([%d%.]+)") + --[[ + print("Before finding data in the metatable, mtbl was ") + PrintTable(mtbl) + print(type(mtbl.lastlocation)) + local _,_,x,y,z = string.find(mtbl.lastlocation,"([-%d%.]+) ([-%d%.]+) ([-%d%.]+)") local vec = {x,y,z} for k,v in pairs(vec) do vec[k] = tonumber(v) end print("setting player pos to") PrintTable(vec) - ply:SetPos(Vector(unpack(vec))) - deserialize_player(ply,plyd) + ]] + ply:SetPos(mtbl.lastlocation) + q.deserialize_player(ply,plyd) end end print("doing query",q_str) @@ -122,7 +91,7 @@ function sql.CreatePlayerTable(ply) local plymet = data.newmeta() local plydata = util.TableToJSON(plytbl) local metdata = util.TableToJSON(plymet) - local q_str = s_fmt(create_player_query,s64,plydata,metdata) + local q_str = q.s_fmt(create_player_query,s64,plydata,metdata) local q_suc = function(res,li) print("Inserted new player",ply) sql.GetPlayerData(ply) @@ -133,12 +102,12 @@ end function sql.SendPlayerToInstance(ply,ls,ll) local s64 = ply:SteamID64() - local plydata = serialize_player(ply) + local plydata = q.serialize_player(ply) local plymeta = util.TableToJSON({ lastserver = ls, lastlocation = ll }) - local q_str = s_fmt(save_player_query,plymeta,plydata,s64) + local q_str = q.s_fmt(save_player_query,plymeta,plydata,s64) local q_suc = function(res,li) print("Successfully saved player data") end @@ -157,4 +126,6 @@ concommand.Add("DoQuery",function(ply,cmd,args) end end) +print("In sv_setup.lua, sql before returning is", sql) + return sql |
