From 191ba416c8b611ea4901cead138789a357c56134 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sun, 2 Apr 2017 20:05:56 -0400 Subject: I finally had some time to work on this... dependency added on bobbleheadbob's zone addon --- gamemode/server/sv_mapchange.lua | 64 +++++++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 11 deletions(-) (limited to 'gamemode/server/sv_mapchange.lua') diff --git a/gamemode/server/sv_mapchange.lua b/gamemode/server/sv_mapchange.lua index 032a1bb..d697a67 100644 --- a/gamemode/server/sv_mapchange.lua +++ b/gamemode/server/sv_mapchange.lua @@ -1,12 +1,17 @@ --[[ A script to move the player to a different map ]] +local fn = nrequire("utility/fn.lua") +local q = nrequire("core/database/queries.lua") +nrequire("sv_mysqlite.lua") local mapname = game.GetMap() local mapareasstr = file.Read("artery/maps/" .. mapname .. "/mapareas.txt") +--[=[ +local dontupdatedisconnect = {} + hook.Add("InitPostEntity", "LoadMapChangePoints", function() local transfers = string.Explode("\r?\n\r?\n",mapareasstr,true) - local dontupdatedisconnect = {} for k,v in pairs(transfers) do local parts = string.Explode("\r?\n",v,true) local vectortxt = string.Explode(" ",parts[1],false) @@ -25,35 +30,71 @@ hook.Add("InitPostEntity", "LoadMapChangePoints", function() print("collider",collider) if coldata.HitEntity:IsPlayer() then dontupdatedisconnect[coldata.HitEntity] = true - local db = ART.database local qc = table.concat({[[ - UPDATE artery.playerdata SET WorldPosition="]], + UPDATE playerdata SET MetaData="]], tvt[1]," ", tvt[2]," ", tvt[3]," ", [[" WHERE SteamID="]], coldata.HitEntity:SteamID64(), '"'}) + local query = [[ + UPDATE playerdata SET PlayerData='%s',MetaData='%s' WHERE SteamID=%.0f + ]] + local pdat = util.TableToJSON(coldata.HitEntity.data) + local pmet = util.TableToJSON({ + lastserver = server, + lastlocation = parts[5] + }) + print("pdat is", pdat) + print("pmet is", pmet) + local fquery = q.s_fmt(query,pdat,pmet,coldata.HitEntity:SteamID64()) + print("fquery was", fquery) print("Running query:",qc) - local q = db:query(qc) - function q:onSuccess(data) - print("Got data from update:") - PrintTable(data) + MySQLite.query(fquery,function(data) coldata.HitEntity:ConCommand("connect " .. server) - end - function q:onError(err,sql) + end,function(err,sql) print("Query error:") print("Query",sql) print("Error",err) - end - q:start() + end) end end sch:Spawn() print("Loading mapchange area",svec) end end) +]=] + +local function SavePlayerData(ply) + local query + local pdat = q.serialize_player(ply) + if dontupdatedisconnect[ply] then + dontupdatedisconnect[ply] = nil + query = [[ + UPDATE playerdata SET PlayerData='%s' WHERE SteamID=%.0f + ]] + query = q.s_fmt(query,pdat,ply:SteamID64()) + else + query = [[ + UPDATE playerdata SET PlayerData='%s' MetaData='%s' WHERE SteamID=%.0f + ]] + local pmet = util.TableToJSON({ + lastserver = game.GetIPAddress(), + lastlocation = ply:GetPos() + }) + query = q.s_fmt(query,pdat,pmet,ply:SteamID64()) + end + MySQLite.query(query,function(data) + + end,function(err,sql) + print("Query error:") + print("Query",sql) + print("Error",err) + end) +end +--[=[ hook.Add("PlayerDisconnected","SavePlayerData",function(ply) local qc if dontupdatedisconnect[ply] then @@ -109,3 +150,4 @@ hook.Add("PlayerDisconnected","SavePlayerData",function(ply) end q:start() end) +]=] -- cgit v1.2.3-70-g09d2