summaryrefslogtreecommitdiff
path: root/gamemode/structuresystem/loadstructures.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/structuresystem/loadstructures.lua')
-rw-r--r--gamemode/structuresystem/loadstructures.lua34
1 files changed, 34 insertions, 0 deletions
diff --git a/gamemode/structuresystem/loadstructures.lua b/gamemode/structuresystem/loadstructures.lua
new file mode 100644
index 0000000..858d976
--- /dev/null
+++ b/gamemode/structuresystem/loadstructures.lua
@@ -0,0 +1,34 @@
+print("Loading structures!")
+GMS = GMS or {}
+GMS.Structures = GMS.Structures or {}
+GMS.UniqueStructures = {}
+
+function registerStructure(tbl)
+ assert(tbl.Name != nil, "Structure's name is nil!")
+ GMS.Structures[tbl.Name] = tbl
+end
+
+concommand.Add("gms_spawnstructure",function(ply,cmd,args)
+ if !ply:IsDeveloper() then return end
+ assert(args[1] != "","Failed to find structure name")
+ assert(GMS.Structures[args[1]] != nil, "Structure \"" .. args[1] .. "\" does not exist!")
+
+ local tr = ply:GetEyeTrace()
+ local e = ents.Create("gms_generic_structure")
+
+ local tbl = GMS.Structures[args[1]]
+ if tbl.uniquedata then
+ tbl = table.Copy(tbl)
+ GMS.UniqueStructures[e:EntIndex()] = tbl
+ end
+
+ for k,v in pairs(tbl) do
+ print("Setting " .. k .. " to")
+ print(v)
+ e[k] = v
+ end
+ e:Spawn()
+ e:SetPos(tr.HitPos)
+ SPropProtection.PlayerMakePropOwner( ply, e )
+ --e:SetNWString("Owner",ply:Nick())
+end)