@ -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