--[[ A script to move the player to a different map ]] local mapname = game.GetMap() local mapareasstr = file.Read("artery/maps/" .. mapname .. "/mapareas.txt") 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) 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 db = ART.database local qc = table.concat({[[ UPDATE artery.playerdata SET WorldPosition="]], tvt[1]," ", tvt[2]," ", tvt[3]," ", [[" WHERE SteamID="]], coldata.HitEntity:SteamID64(), '"'}) print("Running query:",qc) local q = db:query(qc) function q:onSuccess(data) print("Got data from update:") PrintTable(data) coldata.HitEntity:ConCommand("connect " .. server) end function q:onError(err,sql) print("Query error:") print("Query",sql) print("Error",err) end q:start() end end sch:Spawn() print("Loading mapchange area",svec) 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)