aboutsummaryrefslogtreecommitdiff
path: root/gamemode/shared/sh_quests.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/shared/sh_quests.lua')
-rw-r--r--gamemode/shared/sh_quests.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/gamemode/shared/sh_quests.lua b/gamemode/shared/sh_quests.lua
new file mode 100644
index 0000000..ace050a
--- /dev/null
+++ b/gamemode/shared/sh_quests.lua
@@ -0,0 +1,35 @@
+--[[
+ Details how quests are handeled
+]]
+
+local pmeta = FindMetaTable("Player")
+
+if SERVER then
+ util.AddNetworkString("synchquest")
+end
+
+function pmeta:SynchronizeQuest(name)
+ net.Start("synchquest")
+ net.WriteString(name)
+ net.WriteUInt(self.Quests[name],16)
+ net.Send(self)
+end
+
+if CLIENT then
+ net.Receive("synchquest",function()
+ LocalPlayer().Quests = LocalPlayer().Quests or {}
+ print("Got quest status")
+ local questname,queststatus = net.ReadString(), net.ReadUInt(16)
+ LocalPlayer().Quests[questname] = queststatus
+ end)
+
+ ART.Quests = ART.Quests or {}
+ function ART.RegisterQuest(tbl)
+ assert(ART.Quests[tbl.Name] == nil,"Tried to register two quests with the same name:" .. tbl.Name)
+ ART.Quests[tbl.Name] = tbl
+ end
+
+ function ART.GetQuest(name)
+ return ART.Quests[name]
+ end
+end