ID:262793
 
Code:
mob/Login()

client/proc/SaveMob()
world << "[src] has logged out of the world."
var/savefile/F = new("players.sav")
var/char_ckey = cKey(src.mob.name)
F["/[ckey]/[char_ckey]"] << src.mob
ppl -= 1
del(src.mob)

client/proc/LoadMob(char_ckey)
var/mob/new_mob
var/savefile/F = new("players.sav")
F["/[ckey]/[char_ckey]"] >> new_mob
if (!new_mob)
return 0
else
src << "<B>Welcome to [world.name]!"//message player sees
world << "<B><font color=green>[usr] has logged in!"
ppl += 1
if(host == "")
host = "[new_mob.name]"
new_mob.verbs +=typesof(/mob/host/verb/)
return 1

client/Del()
if (istype(src.mob, /mob/other/choosing_character))
return ..()

src.SaveMob()
return ..()

mob/characters
Logout()
world << "[usr]([usr.key]) Logs Out!"
mob/other/choosing_character
Login()
if((key in banned)||(client.address in banned))
del(src)
return
else
spawn() ChooseCharacter()

proc
ChooseCharacter()
src.loc = locate(7,7,3)
var/list/characters = src.CharacterList()
var/newCharacterChoice = "Create new character"
var/DeleteCharacterChoice = "Delete a character"
var/list/menu = new()
menu += characters
menu += newCharacterChoice
menu += DeleteCharacterChoice

var/result = input("Choose a character or create a new one", "Who do you want to be today?") in menu

if (result == newCharacterChoice)
src.CreateNewCharacter()
if (result == DeleteCharacterChoice)
src.DeleteCharacter()
src.ChooseCharacter()
else
var/success = src.client.LoadMob(result)

if (success)
del(src)
else
alert("Sorry, unable to load that character!")
src.ChooseCharacter()

CharacterList()
var/savefile/F = new("players.sav")
F.cd = "/[ckey]"
var/list/characters = F.dir
return characters

proc/DeleteCharacter()
var/savefile/F = new("players.sav")

F.cd = "/[ckey]"
var/list/characters = F.dir

var/CancelCharacterDeletion = "Cancel"
var/list/menu = new()
menu += characters
menu += CancelCharacterDeletion

var/result = input("deleting a character", null, "Which character do you want to delete?") in menu

if (result)
F.cd = "/[ckey]"
F.dir.Remove(result)
if (result == CancelCharacterDeletion)
src.ChooseCharacter()
else
src.ChooseCharacter()

mob/other/choosing_character/proc/CreateNewCharacter()

var/prompt_title = "New Character"
var/help_text = "What do you want to name the character?"
var/default_value = key
var/char_name = input(src, help_text, prompt_title, default_value) as null|text
var/T = copytext(char_name,1,30)

if (!T)
src.ChooseCharacter()
return

var/ckey_name = ckey(T)
var/list/characters = CharacterList()
if (characters.Find(ckey_name))
alert("You already have a character named that. Please choose another name.")
src.CreateNewCharacter()
return


var/list/races = list("Guy","Orc","Dude","Pirate","Witch(female)","Traveler(female)")
help_text = "Choose your character:"
default_value = "Guy"
var/char_race = input(src, help_text, prompt_title, default_value) in races

var/mob/new_mob
switch(char_race)
if ("Guy")
new_mob = new /mob/characters/klonoa()
if ("Orc")
new_mob = new /mob/characters/pikachu()
if ("Dude")
new_mob = new /mob/characters/cats()
if ("Pirate")
new_mob = new /mob/characters/clonetrooper()
if ("Witch(female)")
new_mob = new /mob/characters/cyberninja()
if ("Traveler(female)")
new_mob = new /mob/characters/blackmage()

new_mob.name = T
ppl += 1
src << "<B>Welcome to [world.name]!"
world << "<B><font color=green>[usr] has logged in!"
src.client.mob = new_mob
if(host == "")
host = "[new_mob.name]"
new_mob.verbs +=typesof(/mob/host/verb/)
new_mob.loc = locate(263,257,1)
del(src)

mob
Login()
..()

Write(savefile/F)
..()

F["last_x"] << x
F["last_y"] << y
F["last_z"] << z

Read(savefile/F)
..()

var/last_x
var/last_y
var/last_z
F["last_x"] >> last_x
F["last_y"] >> last_y
F["last_z"] >> last_z
loc = locate(last_x, last_y, last_z)


Problem description:

runtime error: Cannot read null.name
proc name: SaveMob (/client/proc/SaveMob)
usr: null
src: Rky_nick (/client)
call stack:
Rky_nick (/client): SaveMob()
Rky_nick (/client): Del()
Login()

thee runtime error art above
please help
I think your error is that the mob is already deleted by the time your SaveMob proc gets called.
in

((Oh god people are going to kill me I don't remember the DM code))

client/Del()
if (istype(src.mob, /mob/other/choosing_character))
return ..()

src.SaveMob()
return ..()


Your calling it for the client. Which occurs AFTER the mob is already deleted. So you need to called SaveMob in logout()
In response to Zjm7891
(Just as a reference)
It's
<dm>
In response to Flame Sage
Flame Sage wrote:
(Just as a reference)
It's
> <dm>
>


Or you could just, to show people, type in &lt;dm>&lt;/dm>, which would result in <dm></dm>
In response to Zjm7891
still doesnt work