Save points in an interval
This commit is contained in:
parent
4eedec5bb7
commit
1978768a5d
@ -4,7 +4,8 @@ if engine.ActiveGamemode() ~= "zombiesurvival" then return end
|
|||||||
local settings = {
|
local settings = {
|
||||||
StartingSavedPoints = 100,
|
StartingSavedPoints = 100,
|
||||||
MinimumPoints = 0,
|
MinimumPoints = 0,
|
||||||
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)
|
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)
|
||||||
"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…
Reference in New Issue
Block a user