ID:157993
 
        if(fexists("players/[src.key]/Slot_1.sav"))
usr << "[usr.hasslot1]"
var/savefile/s1=new("players/[src.key]/Slot_1.sav")
Read(s1)
s1["icon"]>>src.icon


how would i make it show the actual icon the user on the map?
s1["icon"]<<src.icon

If I'm understanding by what you mean by image.
First, you don't need the s1[]>>icon line, as that is already handled by default by Read(), though honestly not particularly well and this is something you'd want to override.

Second, you should not be calling Read() or Write() directly, as calling Write() directly will cause cross-reference errors and Read() should only be called when you use Write(). Instead, the proper way to save is:

client
New()
if(fexists("[key].sav"))
var/savefile/F = new("[key].sav")
var/select = input("Which character?") in (F.dir + "New Character")
if(select != "New Character")
F[select] >> mob
if(!mob)
//create a new character here
//oh, and make sure they don't name their character "New Character". That'd cause issues.
..()
Del()
var/savefile/F = new("[key].sav")
F[mob.name] << mob
..()


Modified slightly from what I usually do to also show you the proper way of allowing multiple characters on a single savefile.