print("Load globals called") local function ExecuteOnFolder(dir, recursive, func) recursive = recursive ~= nil and recursive or false local path = "data/artery/" local fpath = table.concat({path,dir,"/*"}) local files, directories = file.Find(fpath,"GAME") for k,v in pairs(files) do local callpath = table.concat({path,dir,"/",v}) func(callpath) end if recursive then for k,v in pairs(directories) do local npath = table.concat({dir,"/",v}) ExecuteOnFolder(npath,true,func) end end end util.AddNetworkString("artery_loadfile") util.AddNetworkString("artery_requestcsfile") util.AddNetworkString("artery_respondfile") local toload = {} local function loadglobals() ExecuteOnFolder("global",true,function(f) local filetxt = file.Read(f,"GAME") local filename = string.GetFileFromFilename(f) if string.find(filename,"^cl_") then toload[f] = filetxt elseif string.find(filename,"^sv_") then CompileString(filetxt,f)() else toload[f] = filetxt CompileString(filetxt,f)() end end) end local function load_cs_files(ply) for k,v in pairs(toload) do net.Start("artery_loadfile") net.WriteString(k) local hash = util.CRC(v) net.WriteUInt(tonumber(hash),32) net.Send(ply) end end hook.Add("PlayerInitialSpawn","artery_loadglobals",function(ply) timer.Simple(1,function() load_cs_files(ply) end) end) net.Receive("artery_requestcsfile",function(ln,ply) local which = net.ReadString() net.Start("artery_respondfile") net.WriteString(which) net.WriteString(toload[which]) net.Send(ply) end) concommand.Add("artery_reloadglobals",function(ply,cmd,args) if not ply:IsAdmin() then return end loadglobals() for k,v in pairs(player.GetAll()) do load_cs_files(v) end end) loadglobals()