diff options
Diffstat (limited to 'gamemode/server')
| -rw-r--r-- | gamemode/server/sv_mapchange.lua | 119 |
1 files changed, 117 insertions, 2 deletions
diff --git a/gamemode/server/sv_mapchange.lua b/gamemode/server/sv_mapchange.lua index ede6962..d697a67 100644 --- a/gamemode/server/sv_mapchange.lua +++ b/gamemode/server/sv_mapchange.lua @@ -2,11 +2,70 @@ A script to move the player to a different map ]] local fn = nrequire("utility/fn.lua") -local q = nrequire("core/database/sv_queries.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) @@ -35,4 +94,60 @@ local function SavePlayerData(ply) end) end -hook.Add("PlayerDisconnected","SavePlayerData",SavePlayerData) +--[=[ +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) +]=] |
