Save points in an interval

master
David Vogel 6 years ago
parent 4eedec5bb7
commit 1978768a5d

@ -4,6 +4,7 @@ if engine.ActiveGamemode() ~= "zombiesurvival" then return end
local settings = { local settings = {
StartingSavedPoints = 100, StartingSavedPoints = 100,
MinimumPoints = 0, MinimumPoints = 0,
PointsaveInterval = 30, -- Save points every x seconds
IgnoredMaps = { -- Use $ at the end if you want to define exact map names with versions. (Otherwise it will match with all maps beginning with the given name) IgnoredMaps = { -- Use $ at the end if you want to define exact map names with versions. (Otherwise it will match with all maps beginning with the given name)
"zs_obj_gauntlet", "zs_obj_gauntlet",
"zs_gauntlet_reborn" "zs_gauntlet_reborn"
@ -19,6 +20,8 @@ end
local function savePoints(ply) local function savePoints(ply)
if PointSaving_shouldIgnoreMap(game.GetMap()) then return end if PointSaving_shouldIgnoreMap(game.GetMap()) then return end
if not ply.PointSaving_Loaded then return end
if ply:Team() == TEAM_HUMAN then if ply:Team() == TEAM_HUMAN then
ply:SetSavedPoints(ply:GetPoints()) ply:SetSavedPoints(ply:GetPoints())
end end
@ -34,7 +37,13 @@ hook.Add("PostEndRound", "pointsave_postendround", function(winner)
end end
end) end)
-- TODO: Save points every minute or so timer.Create("pointsave_pointsavetimer", settings.PointsaveInterval, 0, function()
if PointSaving_shouldIgnoreMap(game.GetMap()) then return end
for k, ply in pairs(player.GetAll()) do
savePoints(ply)
end
end)
local function loadPoints(ply) local function loadPoints(ply)
if PointSaving_shouldIgnoreMap(game.GetMap()) then return end if PointSaving_shouldIgnoreMap(game.GetMap()) then return end
@ -42,6 +51,7 @@ local function loadPoints(ply)
timer.Simple(0, function() timer.Simple(0, function()
if IsValid(ply) and ply:Team() == TEAM_HUMAN then if IsValid(ply) and ply:Team() == TEAM_HUMAN then
ply:SetPoints(ply:GetSavedPoints()) ply:SetPoints(ply:GetSavedPoints())
ply.PointSaving_Loaded = true
end end
end) end)
@ -58,7 +68,7 @@ function meta:GetSavedPoints()
if SERVER then if SERVER then
local points = self:GetPData("zs_savedpoints", settings.StartingSavedPoints) local points = self:GetPData("zs_savedpoints", settings.StartingSavedPoints)
self:SetNWInt("zs_savedpoints", points) self:SetNWInt("zs_savedpoints", points)
print("### PS Loaded: "..points) --print("### PS Loaded: "..points)
return points return points
end end
@ -72,7 +82,7 @@ if not SERVER then return end
function meta:SetSavedPoints(amount) function meta:SetSavedPoints(amount)
if amount < settings.MinimumPoints then amount = settings.MinimumPoints end if amount < settings.MinimumPoints then amount = settings.MinimumPoints end
amount = math.Round(amount) amount = math.Round(amount)
print("### PS Saved: "..amount) --print("### PS Saved: "..amount)
self:SetNWInt("zs_savedpoints", amount) self:SetNWInt("zs_savedpoints", amount)
self:SetPData("zs_savedpoints", amount) self:SetPData("zs_savedpoints", amount)
end end

Loading…
Cancel
Save