You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.0 KiB
Lua

if engine.ActiveGamemode() ~= "zombiesurvival" then return end
local settings = {
StartingSavedPoints = 100,
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_gauntlet_reborn"
}
}
local function shouldIgnoreMap(mapName)
for k, v in ipairs(settings.IgnoredMaps) do
if string.match(mapName, "^"..v) then return true end
end
end
local function savePoints(ply)
if shouldIgnoreMap(game.GetMap()) then return end
if ply:Team() == TEAM_HUMAN then
print("### PS Saved: "..ply:GetPoints())
ply:SetSavedPoints(ply:GetPoints())
end
end
hook.Add("PlayerDeath", "pointsave_death", savePoints)
hook.Add("PlayerDisconnected", "pointsave_disconnect", savePoints)
local function loadPoints(ply)
if shouldIgnoreMap(game.GetMap()) then return end
timer.Simple(0, function()
if IsValid(ply) and ply:Team() == TEAM_HUMAN then
print("### Loaded: "..ply:GetSavedPoints())
ply:SetPoints(ply:GetSavedPoints())
end
end)
end
hook.Add("PlayerSpawn", "pointsave_spawn", loadPoints)
hook.Add("PlayerReadyRound", "pointsave_readyround", loadPoints) -- Fix for ZS:R. Problem: It can be called from client!
-- #### Player meta ####
local meta = FindMetaTable("Player") -- Get the meta table of player
-- Shared methods
function meta:GetSavedPoints()
if SERVER then
local points = self:GetPData("zs_savedpoints", settings.StartingSavedPoints)
self:SetNWInt("zs_savedpoints", points)
return points
end
return self:GetNWInt("zs_savedpoints", settings.StartingSavedPoints)
end
if not SERVER then return end
-- Server side methods
function meta:SetSavedPoints(amount)
self:SetNWInt("zs_savedpoints", amount)
self:SetPData("zs_savedpoints", amount)
end
function meta:AddSavedPoints(amount)
local points = self:GetSavedPoints()
self:SetSavedPoints(points + amount)
end
function meta:TakeSavedPoints(amount)
self:AddSavedPoints(-amount)
end