aboutsummaryrefslogtreecommitdiff
path: root/gamemode
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode')
-rw-r--r--gamemode/server/sv_database.lua156
-rw-r--r--gamemode/server/sv_mapchange.lua117
-rw-r--r--gamemode/shared/sh_quests.lua35
3 files changed, 0 insertions, 308 deletions
diff --git a/gamemode/server/sv_database.lua b/gamemode/server/sv_database.lua
deleted file mode 100644
index 4a72c68..0000000
--- a/gamemode/server/sv_database.lua
+++ /dev/null
@@ -1,156 +0,0 @@
---One-type setup stuff
-
-do return end
-print("Hello from database.lua!!")
-require("mysqloo")
-
-local createplayerquery
-local createplayerprepare = [[
-INSERT INTO playerdata (`SteamID`, `PlayerName`,`Inventory`, `Skills`,`Quests`, `Prayers`,`WorldPosition`,`World`) VALUES(?, ?, ?, ?, ?, ?, ?, ?)]]
-local createtablequery = [[
-create table if not exists playerdata(SteamID bigint primary key, PlayerName text, Inventory json, Skills json, Quests json, Prayers json, WorldPosition text, World text)]]
-
-local function connectToDatabase()
- if ART.database ~= nil then return end
- ART.database = mysqloo.connect(
- ART.config.dbhost,
- ART.config.dbuser,
- ART.config.dbpass,
- ART.config.dbname,
- ART.config.dbport
- )
- local db = ART.database
-
- function db:onConnected()
- print("Database connected successfully")
- local q = self:query("SELECT 5+5")
- function q:onSuccess(data)
- print("Query successful")
- PrintTable(data)
- end
- function q:onError(err, sql)
- print("Query errored!")
- print("Query",sql)
- error(err)
- end
- q:start()
- end
-
- function db:onConnectionFailed( err )
- print( "Connection to database failed!" )
- print( "Error:",err )
- end
- print("Connecting to db")
- db:connect()
-end
-
-connectToDatabase()
-
-local function checkDatabase()
- local db = ART.database
- print("Checking if playerdata table exists")
- local q = db:query(createtablequery)
- function q:onSuccess(data)
- print("Got data:")
- PrintTable(data)
- end
- function q:onError(err,sql)
- print("Query error:")
- print("Query",sql)
- print("Error",err)
- end
- q:start()
- print("Tried to query, something should be printed soon!")
-end
-
-checkDatabase()
-
-local function loadQueries()
- local db = ART.database
- --print("Loading queries")
- createplayerquery = db:prepare(createplayerprepare)
- --print("starting inventory:")
- --print(ART.defaults.starting_inventory)
- createplayerquery:setString(3,ART.defaults.starting_inventory)
- createplayerquery:setString(4,ART.defaults.starting_skills)
- createplayerquery:setString(5,ART.defaults.starting_quests)
- createplayerquery:setString(6,ART.defaults.starting_prayers)
- createplayerquery:setString(7,ART.defaults.starting_position)
- createplayerquery:setString(8,ART.defaults.starting_world)
- function createplayerquery:onSuccess(data)
- print("Created player entry successfully!")
- end
- function createplayerquery:onError(err)
- print("An error occured while createing a player entry: " .. err)
- end
- ART.DatabaseConnected = true
-end
-
-loadQueries()
-
-function ART.loadPlayerData(ply)
- assert(ART.DatabaseConnected,"Player joined while setup was not complete!")
- print("Attempting to load player data")
- local steamid = ply:SteamID64()
- local db = ART.database
- local q = db:query([[
-select Inventory, Skills, Quests, Prayers, WorldPosition, World from playerdata where SteamID="]] .. steamid .. "\"")
- function q:onSuccess(data)
- if #data == 0 then --Player does not have an entry, make one!
- print("Player does not have entry!")
- if ART.config.server_world ~= ART.defaults.starting_world then
- print("You didn't connect to the starting world, you are on:")
- print(ART.config.server_world)
- print("The starting world is")
- print(ART.defaults.starting_world)
- local ccmd = "connect " .. ART.defaults.starting_world
- print("Running concommand:" .. ccmd)
- --ply:ConCommand(ccmd)
- else
- print("New player without entry in database, and he's connected to the right place!")
- createplayerquery:setString(1,steamid)
- createplayerquery:setString(2,ply:Nick())
- createplayerquery:start()
- ply:ConCommand("retry") -- reconnect to the server to load player data normally
- end
- else
- assert(#data == 1, "Two players with the same steamID? Something's gone horribly wrong!")
- print("Loaded player data,")
- --PrintTable(data)
- local world = data[1].World
- local inv = data[1].Inventory
- local worldpos = data[1].WorldPosition
- print("World:" .. world)
- PrintTable(data)
- if world ~= ART.config.server_world then
- print("Joined the wrong world, redirecting!")
- print("You are on :" .. ART.config.server_world .. " which is not " .. world)
- local ccmd = "connect " .. world
- --ply:ConCommand(ccmd)
- return
- end
- --Otherwise, we're in the right world, load our data
- print("Loading inventory...")
- ply:LoadInventory(inv)
- print("Loading skills...")
- ply.Skills = util.JSONToTable(data[1].Skills)
- print("Loading quests...")
- ply.Quests = util.JSONToTable(data[1].Quests)
- print("Loading prayers...")
- ply.Prayers = util.JSONToTable(data[1].Prayers)
- print("Loading player's worldpos")
- local postbl = string.Explode(" ", worldpos)
- local posvec = Vector(postbl[1],postbl[2],postbl[3])
- print("Setting player pos to:")
- print(posvec)
- ply:SetPos(posvec)
- end
-
- end
- function q:onError(err,sql)
- print("Query error:")
- print("Query",sql)
- print("Error",err)
- end
- q:start()
-end
diff --git a/gamemode/server/sv_mapchange.lua b/gamemode/server/sv_mapchange.lua
index aa27e48..ede6962 100644
--- a/gamemode/server/sv_mapchange.lua
+++ b/gamemode/server/sv_mapchange.lua
@@ -7,65 +7,6 @@ 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)
@@ -95,61 +36,3 @@ local function SavePlayerData(ply)
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)
-]=]
diff --git a/gamemode/shared/sh_quests.lua b/gamemode/shared/sh_quests.lua
deleted file mode 100644
index ace050a..0000000
--- a/gamemode/shared/sh_quests.lua
+++ /dev/null
@@ -1,35 +0,0 @@
---[[
- Details how quests are handeled
-]]
-
-local pmeta = FindMetaTable("Player")
-
-if SERVER then
- util.AddNetworkString("synchquest")
-end
-
-function pmeta:SynchronizeQuest(name)
- net.Start("synchquest")
- net.WriteString(name)
- net.WriteUInt(self.Quests[name],16)
- net.Send(self)
-end
-
-if CLIENT then
- net.Receive("synchquest",function()
- LocalPlayer().Quests = LocalPlayer().Quests or {}
- print("Got quest status")
- local questname,queststatus = net.ReadString(), net.ReadUInt(16)
- LocalPlayer().Quests[questname] = queststatus
- end)
-
- ART.Quests = ART.Quests or {}
- function ART.RegisterQuest(tbl)
- assert(ART.Quests[tbl.Name] == nil,"Tried to register two quests with the same name:" .. tbl.Name)
- ART.Quests[tbl.Name] = tbl
- end
-
- function ART.GetQuest(name)
- return ART.Quests[name]
- end
-end