summaryrefslogtreecommitdiff
path: root/lua/autorun/zone_town.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/autorun/zone_town.lua')
-rw-r--r--lua/autorun/zone_town.lua62
1 files changed, 62 insertions, 0 deletions
diff --git a/lua/autorun/zone_town.lua b/lua/autorun/zone_town.lua
new file mode 100644
index 0000000..a068021
--- /dev/null
+++ b/lua/autorun/zone_town.lua
@@ -0,0 +1,62 @@
+--[[
+ A hunting ground zone will occasionally spawn a monster near a player that will go attack the player
+]]
+zones.RegisterClass("artery_town",Color(0,255,0))
+
+--Use this to set default properties. Only called on server.
+hook.Add("OnZoneCreated","artery_town",function(zone,class,zoneID)
+ if class == "artery_town" then
+ zone.npctbl = {}
+ end
+end)
+
+-- Use this hook to let a player change a zone after making it or with the edit tool.
+-- class is zone.class, zone is the zone's full table, DPanel is a panel to parent your things to, zoneID is the zone's ID, DFrame is the whole frame.
+-- Return your preferred width and height for the panel and the frame will size to it.
+hook.Add("ShowZoneOptions","artery_town",function(zone,class,DPanel,zoneID,DFrame)
+ if class == "artery_town" then
+ local w,h = 500, 400
+
+ local scroll = vgui.Create( "DScrollPanel",DPanel)
+ scroll:Dock(FILL)
+
+ function synctbl()
+ net.Start("artery_town_settbl")
+ net.WriteFloat(zoneID)
+ net.WriteTable(zone.npctbl)
+ net.SendToServer()
+ end
+
+ print("Displaying table, my table is")
+ PrintTable(zone.npctbl)
+
+ local monsterlb = vgui.Create("DLabel",DPanel)
+ monsterlb:Dock(TOP)
+ monsterlb:SetText("Town name:")
+ monsterlb:SetDark(true)
+ monsterlb:SizeToContents()
+ local groundsname = vgui.Create("DTextEntry",DPanel)
+ groundsname:SetText(zone.npctbl.Name or "")
+ groundsname:Dock(TOP)
+ groundsname.OnEnter = function()
+ zone.npctbl.Name = groundsname:GetValue()
+ synctbl()
+ end
+
+ return w, h -- Specify the width and height for the DPanel container. The frame will resize accordingly.
+
+ end
+end)
+
+if SERVER then
+ util.AddNetworkString("artery_town_settbl")
+ net.Receive("artery_town_settbl",function(len,ply)
+ print("Server change received!")
+ local id, new = net.ReadFloat(), net.ReadTable()
+ print("New table is:")
+ PrintTable(new)
+ if not ply:IsAdmin() then return end
+ zones.List[id].npctbl = new
+ zones.Sync()
+ end)
+end