--[[ A script to move the player to a different map ]] do return end 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) for k,v in pairs(transfers) do local parts = string.Explode("\r?\n",v,true) local vectortxt = string.Explode(" ",parts[1],false) local svec = Vector(vectortxt[1],vectortxt[2],vectortxt[3]) local name = parts[2] local server = parts[3] local model = parts[4] local tvt = string.Explode(" ",parts[5],false) local sch = ents.Create("art_serverchanger") sch.Model = model sch.Pos = svec sch.OnHit = function(self, coldata,collider) print("Coldata") PrintTable(coldata) print("collider",collider) if coldata.HitEntity:IsPlayer() then dontupdatedisconnect[coldata.HitEntity] = true local qc = table.concat({[[ 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) MySQLite.query(fquery,function(data) coldata.HitEntity:ConCommand("connect " .. server) end,function(err,sql) print("Query error:") print("Query",sql) print("Error",err) 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 dontupdatedisconnect[ply] = nil qc = table.concat({ [[UPDATE artery.playerdata SET Inventory="]], util.TableToJSON(ply.Inventory), [[", Skills="]], util.TableToJSON(ply.Skills), [[", Quests="]], util.TableToJSON(ply.Quests), [[" WHERE SteamID = "]], ply:SteamID64(), [[";]] }) else local pp = ply:GetPos() qc = table.concat({ [[UPDATE artery.playerdata SET Inventory="]], util.TableToJSON(ply.Inventory), [[", Skills="]], util.TableToJSON(ply.Skills), [[", Quests="]], util.TableToJSON(ply.Quests), [[", WorldPosition="]], pp[1]," ",pp[2]," ",pp[3], [[", World="]], game.GetIPAddress(), [[" WHERE SteamID = "]], ply:SteamID64(), [[";]] }) end local q = ART.database:query(qc) function q:onSuccess(data) print("Saveing player data successful") PrintTable(data) end function q:onError(err, sql) print("Saveing player data errored!") print("Query",sql) error(err) end q:start() end) ]=]