· 8 years ago · May 22, 2018, 01:52 PM
1/*---------------------------------------------------------------------------------------
2Includes The Files Needed For This File To Run Correctly.
3---------------------------------------------------------------------------------------*/
4
5
6
7
8/*---------------------------------------------------------------------------------------
9Saving Player Data / Loading Player Data.
10---------------------------------------------------------------------------------------*/
11
12sql.Query("CREATE TABLE IF NOT EXISTS player_data('steam' TEXT NOT NULL, 'exp' INTEGER NOT NULL, 'curlevel' INTEGER NOT NULL, 'nextlevel' INTEGER NOT NULL, 'levelnum' INTEGER NOT NULL, 'money' INTEGER NOT NULL, PRIMARY KEY('steam'));")
13
14local function SaveSQLData(ply)
15local exp = ply:GetNWInt("Exp")
16local cur = ply:GetNWInt("CurLevel")
17local new = ply:GetNWInt("NextLevel")
18local lvl = ply:GetNWInt("LevelNum")
19local mon = ply:GetNWInt("Money")
20 sql.Begin()
21 sql.Query("UPDATE player_data SET exp = "..exp.." WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")
22 sql.Query("UPDATE player_data SET curlevel = "..cur.." WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")
23 sql.Query("UPDATE player_data SET nextlevel = "..new.." WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")
24 sql.Query("UPDATE player_data SET levelnum = "..lvl.." WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")
25 sql.Query("UPDATE player_data SET money = "..mon.." WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")
26 sql.Commit()
27end
28
29local function LoadSQLData(ply)
30 sql.Begin()
31 ply:SetNWInt("Exp",tonumber(sql.QueryValue("SELECT exp FROM player_data WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")))
32 ply:SetNWInt("CurLevel",tonumber(sql.QueryValue("SELECT curlevel FROM player_data WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")))
33 ply:SetNWInt("NextLevel",tonumber(sql.QueryValue("SELECT nextlevel FROM player_data WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")))
34 ply:SetNWInt("LevelNum",tonumber(sql.QueryValue("SELECT levelnum FROM player_data WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")))
35 ply:SetNWInt("Money",tonumber(sql.QueryValue("SELECT money FROM player_data WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")))
36 sql.Commit()
37end
38
39/*---------------------------------------------------------------------------------------
40Create / Load Players Values On Initial Connect -- Also Saves Player Values On Disconnect.
41---------------------------------------------------------------------------------------*/
42
43hook.Add("PlayerInitialSpawn","RegisterStats",function(ply)
44 if not tonumber(sql.QueryValue("SELECT exp FROM player_data WHERE STEAM = "..sql.SQLStr(ply:SteamID())..";")) then
45 sql.Query("INSERT INTO player_data VALUES("..sql.SQLStr(ply:SteamID())..",".. 0 ..",".. 0 ..","..levelup[2]..",".. 1 ..",".. 100 ..");")
46 ply:SetNWInt("Exp",0)
47 ply:SetNWInt("CurLevel",0)
48 ply:SetNWInt("NextLevel",levelup[2])
49 ply:SetNWInt("LevelNum",1)
50 ply:SetNWInt("Money", 100)
51 ply:ChatPrint("Created character successfully.",3,Color(255,255,255,255))
52 else LoadSQLData(ply)
53 ply:ChatPrint("Loaded character successfully.",3,Color(255,255,255,255))
54 end
55end)
56
57 hook.Add("PlayerSpawn","LoadHealth",function(ply)
58local lvl = ply:GetNWInt("LevelNum")-1
59 ply:SetHealth(100+lvl*5)
60end)
61
62hook.Add("PlayerAuthed","LoadData",function(ply) LoadSQLData(ply) end)
63hook.Add("PlayerDisconnected","UpdateData",function(ply) SaveSQLData(ply) end)
64
65/*---------------------------------------------------------------------------------------
66Saves The Players Values Every 10 Minutes.
67---------------------------------------------------------------------------------------*/
68
69timer.Create("save_data", 300, 0, function()
70 for k, ply in pairs(player.GetAll()) do SaveSQLData(ply)
71 ply:ChatPrint("Autosaving character... \n Autosaved character successfully!")
72 end
73end)