diff options
Diffstat (limited to 'gamemode/server')
| -rw-r--r-- | gamemode/server/sv_loadplayer.lua | 3 | ||||
| -rw-r--r-- | gamemode/server/sv_mapchange.lua | 64 |
2 files changed, 55 insertions, 12 deletions
diff --git a/gamemode/server/sv_loadplayer.lua b/gamemode/server/sv_loadplayer.lua index ee4eee6..f8c2568 100644 --- a/gamemode/server/sv_loadplayer.lua +++ b/gamemode/server/sv_loadplayer.lua @@ -1,4 +1,5 @@ local sql = nrequire("core/database/sv_setup.lua") +print("in sv_loadplayer.lua sql is", sql) local models = {} for k = 1,9 do models[#models + 1] = "models/player/Group01/male_0" .. k .. ".mdl" @@ -6,7 +7,7 @@ for k = 1,9 do end local function delayplayerload(ply) - if ply:Alive() then + if ply:Alive() and IsValid(ply) then sql.GetPlayerData(ply) else timer.Simple(1,function() 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) +]=] |
