Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- nvars = {}
- nvars.current = {}
- nvars.current.g = {}
- function nvars.Set(key, value, env, ply)
- env = env or "g"
- nvars.current[env] = nvars.current[env] or {}
- nvars.current[env][key] = value
- if SERVER then
- netmsg.SendToClient("nv", ply, env, key, value)
- end
- end
- function nvars.Get(key, def, env)
- env = env or "g"
- return nvars.current[env] and nvars.current[env][key] or def
- end
- function nvars.Initialize()
- concommand.Add("fullupdate", function(ply, line, ...)
- for env, vars in pairs(nvars.current) do
- for key, value in pairs(vars) do
- nvars.Set(key, value, env, ply)
- end
- end
- end, true)
- if CLIENT and not HOST then
- netmsg.Hook("nv", function(env, key, value)
- print(env, key, value)
- --concommand.Run("say" , F("[%s] %s = %s", env, key, value))
- nvars.Set(key, value, env)
- end)
- end
- for key, ent in pairs(ents.GetAll()) do
- nvars.AttachObject(ent)
- end
- hook.Add("PostEntitySpawn", "nvars", nvars.AttachObject)
- end
- function nvars.FullUpdate()
- concommand.Run("fullupdate")
- end
- do
- local META = {}
- META.Env = "g"
- function META:__index(key)
- return nvars.Get(key, nil, self.Env)
- end
- function META:__newindex(key, value)
- nvars.Set(key, value, self.Env)
- end
- nvars.ObjectMeta = META
- end
- function nvars.CreateObject(env)
- return setmetatable({Env = tostring(env)}, nvars.ObjectMeta)
- end
- function nvars.AttachObject(ent)
- ent.nv = nvars.CreateObject(ent:GetId())
- end
Advertisement
Add Comment
Please, Sign In to add comment