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
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()