aboutsummaryrefslogtreecommitdiff
path: root/gamemode/server/sv_mapchange.lua
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2016-08-09 17:53:52 -0400
committerAlexander Pickering <alexandermpickering@gmail.com>2016-08-09 17:53:52 -0400
commitd4f197a35c207c9891d3f4dc5e9708af48c935de (patch)
treeee8fd3960c3a3fb4ecaf0f62b50d251f007ebaf3 /gamemode/server/sv_mapchange.lua
parent2fe3c4551344870e3784733fce2d95027b5c8382 (diff)
downloadartery-d4f197a35c207c9891d3f4dc5e9708af48c935de.tar.gz
artery-d4f197a35c207c9891d3f4dc5e9708af48c935de.tar.bz2
artery-d4f197a35c207c9891d3f4dc5e9708af48c935de.zip
Added some weapons
Diffstat (limited to 'gamemode/server/sv_mapchange.lua')
-rw-r--r--gamemode/server/sv_mapchange.lua111
1 files changed, 111 insertions, 0 deletions
diff --git a/gamemode/server/sv_mapchange.lua b/gamemode/server/sv_mapchange.lua
new file mode 100644
index 0000000..032a1bb
--- /dev/null
+++ b/gamemode/server/sv_mapchange.lua
@@ -0,0 +1,111 @@
+--[[
+ 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)