aboutsummaryrefslogtreecommitdiff
path: root/gamemode/server/sv_database.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/server/sv_database.lua')
-rw-r--r--gamemode/server/sv_database.lua156
1 files changed, 0 insertions, 156 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