CapsAdmin

Untitled

Jan 7th, 2012
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.46 KB | None | 0 0
  1. nvars = {}
  2.  
  3. nvars.current = {}
  4. nvars.current.g = {}
  5.  
  6. function nvars.Set(key, value, env, ply)
  7.     env = env or "g"
  8.  
  9.     nvars.current[env] = nvars.current[env] or {}
  10.     nvars.current[env][key] = value
  11.  
  12.     if SERVER then
  13.         netmsg.SendToClient("nv", ply, env, key, value)
  14.     end
  15. end
  16.  
  17. function nvars.Get(key, def, env)
  18.     env = env or "g"
  19.  
  20.     return nvars.current[env] and nvars.current[env][key] or def
  21. end
  22.  
  23. function nvars.Initialize()
  24.     concommand.Add("fullupdate", function(ply, line, ...)
  25.         for env, vars in pairs(nvars.current) do
  26.             for key, value in pairs(vars) do
  27.                 nvars.Set(key, value, env, ply)
  28.             end
  29.         end
  30.     end, true)
  31.  
  32.     if CLIENT and not HOST then
  33.         netmsg.Hook("nv", function(env, key, value)
  34.             print(env, key, value)
  35.             --concommand.Run("say" , F("[%s] %s = %s", env, key, value))
  36.             nvars.Set(key, value, env)
  37.         end)
  38.     end
  39.  
  40.     for key, ent in pairs(ents.GetAll()) do
  41.         nvars.AttachObject(ent)
  42.     end
  43.  
  44.     hook.Add("PostEntitySpawn", "nvars", nvars.AttachObject)
  45. end
  46.  
  47. function nvars.FullUpdate()
  48.     concommand.Run("fullupdate")
  49. end
  50.  
  51. do
  52.     local META = {}
  53.  
  54.     META.Env = "g"
  55.  
  56.     function META:__index(key)
  57.         return nvars.Get(key, nil, self.Env)
  58.     end
  59.  
  60.     function META:__newindex(key, value)
  61.         nvars.Set(key, value, self.Env)
  62.     end
  63.  
  64.     nvars.ObjectMeta = META
  65. end
  66.  
  67. function nvars.CreateObject(env)
  68.     return setmetatable({Env = tostring(env)}, nvars.ObjectMeta)
  69. end
  70.  
  71. function nvars.AttachObject(ent)
  72.     ent.nv = nvars.CreateObject(ent:GetId())
  73. end
Advertisement
Add Comment
Please, Sign In to add comment