diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2016-11-17 17:11:15 -0500 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2016-11-17 17:11:15 -0500 |
| commit | 52fb13ef163bcea7f1409e17fd62509703de9f69 (patch) | |
| tree | 12df9ec09392b561d4a2604544f200635130c8b8 /gamemode/server | |
| parent | 50537786ae45d0e12a1dc4265e0d40d2fd4fbc4b (diff) | |
| download | wintersurvival2-52fb13ef163bcea7f1409e17fd62509703de9f69.tar.gz wintersurvival2-52fb13ef163bcea7f1409e17fd62509703de9f69.tar.bz2 wintersurvival2-52fb13ef163bcea7f1409e17fd62509703de9f69.zip | |
Added persistance
Diffstat (limited to 'gamemode/server')
| -rw-r--r-- | gamemode/server/saveworld.lua | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/gamemode/server/saveworld.lua b/gamemode/server/saveworld.lua new file mode 100644 index 0000000..25dd048 --- /dev/null +++ b/gamemode/server/saveworld.lua @@ -0,0 +1,43 @@ +--[[ + Saves all player-made items in the world before shutdown +]] + +local savedents = { + "ws_alter","ws_barrel","ws_campfire","ws_grave","ws_infuser","ws_prop","ws_researchtable","ws_rune" +} + +hook.Add("ShutDown","save_playermade_ents",function() + local ppe = {} + for k,v in pairs(savedents) do + ppe[v] = true + end + + --Make sure each entity that should be saved implements a Serialize(self) and Deserialize(self,str) function + local savecontent = {} + for k,v in pairs(ents.GetAll()) do + local class = v:GetClass() + if ppe[class] then + local ssc = #savecontent + savecontent[ssc + 1] = class + savecontent[ssc + 2] = ":" + savecontent[ssc + 3] = v:Serialize() + savecontent[ssc + 4] = "\n" + end + end + + file.Write("ws_save.dat",table.concat(savecontent)) +end) + +hook.Add("InitPostEntity","load_playermade_ents",function() + local filesstr = file.Read("ws_save.dat","DATA") + if filesstr == "" then return end + local lines = string.Explode("\n",filesstr) + local _,ee = lines[1]:find("^.-:") + local entname = lines[1]:sub(1,ee - 1) + local entdata = lines[1]:sub(ee + 1) + print("Loading entity ", entname, "with data",entdata) + local ent = ents.Create(entname) + ent:Spawn() + ent:Deserialize(entdata) + print("ent spawned",ent) +end) |
