ID:178322
 
I'm desperately in need of code that can save the world. Basically, I need code that saves every object on the map, including all their vars and their location. I tried but I'm very unfamiliar with saving. This is extremely essential for my game. Could someone help me or give me a link to an example of this?
Garthor wrote:
I'm desperately in need of code that can save the world. Basically, I need code that saves every object on the map, including all their vars and their location. I tried but I'm very unfamiliar with saving. This is extremely essential for my game. Could someone help me or give me a link to an example of this?

If you only want to save objs, not turfs, then I'd try this:
proc/SaveWorld()
var/savefile/F=new(file("world.sav"))
for(var/mob/M in world)
if(M.key || M.loc) M.Write(F)
for(var/obj/O in world)
if(isturf(O.loc)) // items in another atom's contents are saved
O.Write(F)

For anything you don't want to save, you should override Write(). Overriding mob.Write() is essential if you want to save a player's position.

Lummox JR
if(worldInDanger)
call(Superman,Batman,Spiderman,Bubba the Love Sponge)

In response to Lummox JR
Ok, thanks, now how would I do a load proc? =P I am completely clueless on how to do save/load =(. And how would I save a mob's location? I've looked at libraries but I always seem to mess it up when I put it in my game (I prefer to put it in directly instead of libraries because sometimes I forget I have that library included, lol.)
In response to Lord of Water
I thought it was var/mob/S = new pick("/mob/Superman","/mob/Batman","/mob/Justice League")(Villan.x+rand(-10,10),Villan.y+rand(-10,10),Villan. z) . Bleh.
In response to Garthor
Garthor wrote:
Ok, thanks, now how would I do a load proc? =P I am completely clueless on how to do save/load =(. And how would I save a mob's location? I've looked at libraries but I always seem to mess it up when I put it in my game (I prefer to put it in directly instead of libraries because sometimes I forget I have that library included, lol.)

Load would pretty much work in the same order. I'm afraid it's hard to be more specific than that, because I'm not sure to what extent the code I posted will work; I've done only a little with savefiles so far.

Lummox JR
In response to Garthor
No its

proc/Savetheworld()
for(var/mob/monkey/T in world)
if(T.owner = "Foomer")
del(T)
world << "[T] has been destroyed for his masters fear of busy women!"
else
world << "[T] likes busty women!!"
In response to Lummox JR
Your save proc works fine. I tried making a load proc and it doesn't work at all. I seriously need help with this =P
In response to Garthor
Garthor wrote:
Your save proc works fine. I tried making a load proc and it doesn't work at all. I seriously need help with this =P

One thought I had, which may or may not work out:
proc/LoadWorld()
var/savefile/F=new(file("world.sav"))
for(var/subdir in F.dir)
var/item
F[subdir] >> item

I have no idea how well that will work.

Lummox JR

[EDIT]
F.dirs was changed to F.dir.
In response to Lummox JR
Fantasy Life.dm:80:error:F.dirs:undefined var

=P
In response to Garthor
Garthor wrote:
Fantasy Life.dm:80:error:F.dirs:undefined var

Doh! Try F.dir instead; I made a typo.

Lummox JR
In response to Lummox JR
nope, do I have to delete the world first? I wouldn't expect that, but I might.
In response to Garthor
did this work? I've been working on a world save myself and saving is the easy part, loading seems to be the part that doesn't work...

But before I change my code to fit lummox's example I was wondering if it works
In response to Jon Snow
Nope =P