So I’ve been working on a XP system and the saving system works when you leave and come back but after a server restart it does not any ideas?
local meta = FindMetaTable("Player")
// Setters
function meta:SetLevel(level)
if (CLIENT) then return end
local PlayerFile = "level_system/" .. self:UniqueID() .. ".txt"
if (file.Exists(PlayerFile, "DATA")) then
local PlayerData = util.JSONToTable(file.Read(PlayerFile, "DATA"))
self:SetNWInt("PlayerLevel", level)
PlayerData.Level = level
file.Write(PlayerFile, util.TableToJSON(PlayerData, true))
end
end
function meta:SetXP(amount)
if (CLIENT) then return end
local PlayerFile = "level_system/" .. self:UniqueID() .. ".txt"
if (file.Exists(PlayerFile, "DATA")) then
local PlayerData = util.JSONToTable(file.Read(PlayerFile, "DATA"))
self:SetNWInt("PlayerXP", amount)
PlayerData.XP = amount
file.Write(PlayerFile, util.TableToJSON(PlayerData, true))
end
end
// Getters
function meta:GetLevel()
if (CLIENT) then
return self:GetNWInt("PlayerLevel")
end
if (SERVER) then
local PlayerFile = "level_system/" .. self:UniqueID() .. ".txt"
if (file.Exists(PlayerFile, "DATA")) then
local PlayerData = util.JSONToTable(file.Read(PlayerFile, "DATA"))
return PlayerData.Level
end
end
end
function meta:GetXP()
if (CLIENT) then
return self:GetNWInt("PlayerXP")
end
if (SERVER) then
local PlayerFile = "level_system/" .. self:UniqueID() .. ".txt"
if (file.Exists(PlayerFile, "DATA")) then
local PlayerData = util.JSONToTable(file.Read(PlayerFile, "DATA"))
return PlayerData.XP
end
end
end
function InitializeLevelSystem()
if (!file.IsDir("level_system", "DATA")) then
file.CreateDir("level_system", "DATA")
end
end
hook.Add("Initialize", "InitializeLevelSystem", InitializeLevelSystem)
function LoadPlayerData(ply)
local PlayerFile = "level_system/" .. ply:UniqueID() .. ".txt"
if (file.Exists(PlayerFile, "DATA")) then
local PlayerData = util.JSONToTable(file.Read(PlayerFile, "DATA"))
// Update the player's stats (if u want to)
file.Write(PlayerFile, util.TableToJSON(PlayerData, true))
else
// Write the player's stats for the first time
data = {
SteamID = ply:SteamID(),
Level = 0,
XP = 0
}
file.Write(PlayerFile, util.TableToJSON(data, true))
end
end
hook.Add("PlayerInitialSpawn", "LoadPlayerData", LoadPlayerData)