add sborka
This commit is contained in:
72
garrysmod/addons/module_adminmod/lua/sam/libs/sh_globals.lua
Normal file
72
garrysmod/addons/module_adminmod/lua/sam/libs/sh_globals.lua
Normal file
@@ -0,0 +1,72 @@
|
||||
if SAM_LOADED then return end
|
||||
|
||||
local sam, netstream = sam, sam.netstream
|
||||
|
||||
local globals
|
||||
|
||||
if SERVER then
|
||||
globals = {}
|
||||
local order = {}
|
||||
|
||||
local get_order_key = function(key)
|
||||
for i = 1, #order do
|
||||
if order[i] == key then
|
||||
return i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function sam.set_global(key, value, force)
|
||||
if force or globals[key] ~= value then
|
||||
globals[key] = value
|
||||
|
||||
if value ~= nil then
|
||||
if not get_order_key(key) then
|
||||
table.insert(order, key)
|
||||
end
|
||||
else
|
||||
local i = get_order_key(key)
|
||||
if i then
|
||||
table.remove(order, i)
|
||||
end
|
||||
end
|
||||
|
||||
netstream.Start(nil, "SetGlobal", key, value)
|
||||
end
|
||||
end
|
||||
|
||||
hook.Add("OnEntityCreated", "SAM.Globals", function(ent)
|
||||
if ent:IsPlayer() and ent:IsValid() then
|
||||
netstream.Start(ent, "SendGlobals", globals, order)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
if CLIENT then
|
||||
function sam.set_global(key, value)
|
||||
if globals then
|
||||
globals[key] = value
|
||||
hook.Call("SAM.ChangedGlobalVar", nil, key, value)
|
||||
end
|
||||
end
|
||||
netstream.Hook("SetGlobal", sam.set_global)
|
||||
|
||||
netstream.Hook("SendGlobals", function(vars, order)
|
||||
globals = vars
|
||||
|
||||
for _, key in ipairs(order) do
|
||||
hook.Call("SAM.ChangedGlobalVar", nil, key, vars[key])
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function sam.get_global(key, default)
|
||||
if globals then
|
||||
local value = globals[key]
|
||||
if value ~= nil then
|
||||
return value
|
||||
end
|
||||
end
|
||||
|
||||
return default
|
||||
end
|
||||
Reference in New Issue
Block a user