ID:143810
 
Code:
mob/Login()
if(!fexists("Players/[src.ckey].sav"))
src.name = input("Please type a name for your character.",src.name,src.key) as text
src.Special_RaceCheck()
var/savefile/F = new("Players/[src.ckey].sav")
src.Write(F)
F["X"] << src.x
F["Y"] << src.y
F["Z"] << src.z
if(fexists("Players/[src.ckey].sav"))
var/savefile/F = new("Players/[src.ckey].sav")
src.Read(F)
F["X"] >> src.x
F["Y"] >> src.y
F["Z"] >> src.z
src << "<center><b><font color=\"#0032C1\">Welcome to XXXXXX XXX Universe</font></b>"
world<<"<b><font color=\"#0032C1\"><center>[src.key] logged in.</center></font>"
if(src.loc == null)
src.Move(locate(/turf/Start_Loc))
src.Admin_Checked()

mob/Logout()
if(fexists("Players/[src.ckey].sav"))
var/savefile/F = new("Players/[src.ckey].sav")
src.Write(F)
F["X"] << src.x
F["Y"] << src.y
F["Z"] << src.z
..()
world<<"<b><small><font color=\"#0032C1\"><center>[src.key] logged out.</center></font></b></small>"
del src


Problem description:
runtime error: cannot append to list
proc name: Login (/mob/Login)
source file: Login.dm,40
usr: Lyndon (/mob/players/human)
src: Lyndon (/mob/players/human)
call stack:
Lyndon (/mob/players/human): Login()

Line 40 being
        src.Read(F)


Basically this error message pops up whenever there is an item (obj/items/Test) within the player's 'inventory' and I have no clue why. Surely the use of the built in procs Write() and Read() should be bug free so it must be somthing to do with my code but as of such I cannot seem to find any error. It has nothing to do with item stacking, nothing to do with the items and nothing to do with previous procs so 0.o Please help
It seems apparent everyone would rather help on things that they understand (and have posts that are rather badly orientated without the dm tags) and that nobody knows how to fix this problem that only appears in one of my environments.
In response to Lyndonarmitage1 (#1)
You're not getting an answer because all the code you posted there was perfectly valid (with the exception of your Move(locate(/turf/Start_Loc), which will cause people to be stuck in the void if the Move() fails).

Your problem is with WHAT you are saving. So, we'll need to see the code for items in this environment.
In response to Garthor (#2)
okay thank you.
The basic item code is:
 obj/items

var
Locked_Pick = null
Equipped = null
mob/owner
tmp/Valule = 0
DblClick()
if(src in usr.contents)
Move(usr.loc)
else
if(src in view(1))
if(!Locked_Pick)
Move(usr)
src.owner = usr
New()
..()
spawn(1)
if(ismob(src.loc))
src.owner = src.loc


I have also figured out what the problem was the section:
    New()
..()
spawn(1)
if(ismob(src.loc))
src.owner = src.loc

Causes this error I believe.
In response to Lyndonarmitage1 (#3)
Close. Your problem is that the owner variable is being saved at all. I suggest changing it to a tmp variable.

First, I'd suggest removing that spawn() in New(). It's a hacky way of doing things. Instead, owner should be set in obj/items/Move(), when moved into a mob's contents, and in New(), when it's created directly into a mob's contents. In addition, you will need to override Read(), and put the same if(ismob(loc)) owner = loc line in there (after ..()), so that the owner variable is set properly.