Files
wnsrc/lua/sam/player/sh_nw_vars.lua
lifestorm 94063e4369 Upload
2024-08-04 22:55:00 +03:00

79 lines
1.6 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
if SAM_LOADED then return end
local netstream = sam.netstream
local nwvars = {}
if SERVER then
function sam.player.set_nwvar(ply, key, value, force)
local id = ply:EntIndex()
if force or nwvars[id][key] ~= value then
nwvars[id][key] = value
netstream.Start(nil, "SetNWVar", id, key, value)
end
end
end
if CLIENT then
function sam.player.set_nwvar(ply, key, value)
local id_vars = nwvars[ply:EntIndex()]
id_vars[key] = value
end
netstream.Hook("SetNWVar", function(id, key, value)
local id_vars = nwvars[id]
if id_vars == nil then
nwvars[id] = {
[key] = value
}
else
id_vars[key] = value
end
end)
netstream.Hook("SendNWVars", function(vars)
nwvars = vars
end)
netstream.Hook("RemoveNWVar", function(id)
nwvars[id] = nil
end)
end
function sam.player.get_nwvar(ply, key, default)
local value = nwvars[ply:EntIndex()]
if value then
value = value[key]
if value ~= nil then
return value
end
end
return default
end
if SERVER then
hook.Add("OnEntityCreated", "SAM.NWVars", function(ent)
if ent:IsPlayer() and ent:IsValid() then
nwvars[ent:EntIndex()] = {}
netstream.Start(ent, "SendNWVars", nwvars)
end
end)
hook.Add("EntityRemoved", "SAM.NWVars", function(ent)
if ent:IsPlayer() then
local id = ent:EntIndex()
nwvars[id] = nil
netstream.Start(nil, "RemoveNWVar", id)
end
end)
end