--Loads map config form a file do return end function ART.CreateTownie(tbl) local npcent = ents.Create("npc_townie") for k,v in pairs(tbl) do npcent[k] = v end npcent:Spawn() end function ART.CreateNavNode(tbl) local nodeent = ents.Create("info_townienode") assert(tbl ~= nil, "Tried to create a nil navnode") for k,v in pairs(tbl) do nodeent[k] = v end nodeent:Spawn() end local removeents = { "npc_townie", -- "art_chest", "info_townienode", "npc_shop", } for k,v in pairs(removeents) do local eot = ents.FindByClass(v) for i,j in pairs(eot) do j:Remove() end end local mapfields = { "navnodes", "npcs", -- "chests", } local function loadMap() for k,v in ipairs(mapfields) do local mapname = game.GetMap() local fpath = string.format("artery/maps/%s/%s/*", mapname, v) local files,dirs = file.Find(fpath,"DATA") for i,j in pairs(files) do if string.GetExtensionFromFilename(j) ~= "lua" then continue end local itempath = string.format("artery/maps/%s/%s/%s", mapname, v, j) local itemtxt = file.Read(itempath, "DATA") assert(itemtxt ~= nil, "Found a file, but it looks like it can't be compiled:" .. itempath) CompileString(itemtxt,itempath)() end end end hook.Add( "InitPostEntity", "artery_spawnmapnpcs", function() loadMap() end ) concommand.Add("artery_reloadmap", function() for k,v in pairs(removeents) do local eot = ents.FindByClass(v) for i,j in pairs(eot) do j:Remove() end end loadMap() end)