· 8 years ago · May 15, 2018, 04:36 AM
1/*---------------------------------------------------------------------------------------
2Includes the files needed for this file to run correctly.
3---------------------------------------------------------------------------------------*/
4
5include("Leveling/sv_player_skills")
6
7/*---------------------------------------------------------------------------------------
8Saving Player Data / Loading Player Data
9---------------------------------------------------------------------------------------*/
10
11sql.Query("CREATE TABLE IF NOT EXISTS player_stats('steam' TEXT NOT NULL, 'exp' INTEGER NOT NULL, 'curlevel' INTEGER NOT NULL, 'nextlevel' INTEGER NOT NULL, 'levelnum' INTEGER NOT NULL, PRIMARY KEY('steam'));")
12
13local function SaveSQLData(ply)
14local exp = ply:GetNWInt("Exp")
15local cur = ply:GetNWInt("CurLevel")
16local new = ply:GetNWInt("NextLevel")
17local lvl = ply:GetNWInt("LevelNum")
18 sql.Begin()
19 sql.Query("UPDATE player_stats SET exp = "..exp.." WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")
20 sql.Query("UPDATE player_stats SET curlevel = "..cur.." WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")
21 sql.Query("UPDATE player_stats SET nextlevel = "..new.." WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")
22 sql.Query("UPDATE player_stats SET levelnum = "..lvl.." WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")
23 sql.Commit()
24end
25
26local function LoadSQLData(ply)
27 sql.Begin()
28 ply:SetNWInt("Exp",tonumber(sql.QueryValue("SELECT exp FROM player_stats WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")))
29 ply:SetNWInt("CurLevel",tonumber(sql.QueryValue("SELECT curlevel FROM player_stats WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")))
30 ply:SetNWInt("NextLevel",tonumber(sql.QueryValue("SELECT nextlevel FROM player_stats WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")))
31 ply:SetNWInt("LevelNum",tonumber(sql.QueryValue("SELECT levelnum FROM player_stats WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")))
32 sql.Commit()
33end
34
35/*---------------------------------------------------------------------------------------
36Load / Create Player Values On Initial Connect
37---------------------------------------------------------------------------------------*/
38
39hook.Add("PlayerInitialSpawn","RegisterEXP",function(ply)
40 if not tonumber(sql.QueryValue("SELECT exp FROM player_stats WHERE steam = "..sql.SQLStr(ply:SteamID())..";")) then
41 sql.Query("INSERT INTO player_stats VALUES("..sql.SQLStr(ply:SteamID())..",".. 0 ..",".. 0 ..","..levelups[2]..",".. 1 ..");")
42 ply:SetNWInt("Exp",0)
43 ply:SetNWInt("CurLevel",0)
44 ply:SetNWInt("NextLevel",levelups[2])
45 ply:SetNWInt("LevelNum",1)
46 else LoadSQLData(ply) end
47end)
48
49timer.Create("save_stats"), 10, 0, function
50 for k, ply in pairs(player.GetAll()) do SaveSQLData(ply) ply:ChatPrint("Saving player data!")
51
52 end
53
54hook.Add("PlayerAuthed","LoadStats",function(ply) LoadSQLData(ply) end)
55hook.Add("PlayerDisconnected","UpdateStats",function(ply) SaveSQLData(ply) end)
56
57/*---------------------------------------------------------------------------------------
58Levels & Exp Required For The Level
59---------------------------------------------------------------------------------------*/
60
61// The markers at which you gain a level (always leave the 0, don't go negative or put something before 0)
62levelups = {
630, // Level 1
6450, // Level 2
65100, // Level 3... and so on
66250,
67500,
681000,
692500,
705000,
7110000,
7220000,
7350000}
74
75
76/*---------------------------------------------------------------------------------------
77Give Experience
78---------------------------------------------------------------------------------------*/