--Make sure zones are loaded already nrequire("sv_mysqlite.lua") local q = nrequire("core/database/sv_queries.lua") --if not zones then error("This thing needs zones to function!") end print("Hello from sv_mapstich.lua") util.AddNetworkString("art_zonechange") util.AddNetworkString("art_sendtoserver") local dontupdatedisconnect = {} 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 = tostring(ply:GetPos()) }) print("pmet turns out to be",pmet) 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 concommand.Add("artery_saveplayer",function(ply,cmd,args) SavePlayerData(ply) end) net.Receive("art_zonechange",function(len,ply) SavePlayerData(ply) timer.Simple(0.5,function() if not IsValid(ply) then return end local zone = ply:GetCurrentZone("artery_serverchange") if zone then dontupdatedisconnect[ply] = true local query = [[ UPDATE playerdata SET MetaData='%s' WHERE SteamID=%.0f ]] local pmet = util.TableToJSON({ lastserver = zone.toserver, lastlocation = tostring(zone.topos) }) print("pmet is", pmet) local fquery = q.s_fmt(query,pmet,ply:SteamID64()) print("fquery was", fquery) print("Running query:",qc) MySQLite.query(fquery,function(data) --Holy shit fuck garry for breaking this --ply:ConCommand("connect " .. zone.toserver) net.Start("art_sendtoserver") net.WriteString(zone.toserver) net.Send(ply) end,function(err,sql) print("Query error:") print("Query",sql) print("Error",err) end) end end) end) hook.Add("PlayerDisconnected","save_data_on_disconnect",function(ply) SavePlayerData(ply) end)