I could use help. Here is the login file's code:
#include <deadron/basecamp>
#define BASE_MENU_CREATE_CHARACTER "Create New Character"
#define BASE_MENU_DELETE_CHARACTER "Delete Character"
#define BASE_MENU_CANCEL "Cancel"
#define BASE_MENU_QUIT "Quit"
client/var/tmp
base_num_characters_allowed = 1
base_autoload_character = 1
base_autosave_character = 1
base_autodelete_mob = 1
base_save_verbs = 1
mob
var/tmp
base_save_allowed = 1
base_save_location = 1
var/list/base_saved_verbs
proc/base_InitFromSavefile()
return
Write(savefile/F)
..()
if (base_save_location && world.maxx)
F["last_x"] << x
F["last_y"] << y
F["last_z"] << z
return
Read(savefile/F)
..()
if (base_save_location && world.maxx)
var/last_x
var/last_y
var/last_z
F["last_x"] >> last_x
F["last_y"] >> last_y
F["last_z"] >> last_z
var/destination = locate(last_x, last_y, last_z)
Move(destination)
world<<"<B>[usr] has logged in!"
return
mob/BaseCamp
base_save_allowed = 0
Login()
RemoveVerbs()
return
Stat()
return
Logout()
del usr
return
proc/RemoveVerbs()
for (var/my_verb in verbs)
verbs -= my_verb
mob/BaseCamp/FirstTimePlayer
proc/FirstTimePlayer()
return 1
world
mob = /mob/BaseCamp/ChoosingCharacter
mob/BaseCamp/ChoosingCharacter
Login()
spawn()
ChooseCharacter()
return ..()
proc/ChooseCharacter()
var/list/available_char_names = client.base_CharacterNames()
var/list/menu = new()
menu += available_char_names
if (length(available_char_names) < client.base_num_characters_allowed)
if (client.base_num_characters_allowed == 1)
client.base_NewMob()
del(src)
return
else
menu += BASE_MENU_CREATE_CHARACTER
if (length(available_char_names))
menu += BASE_MENU_DELETE_CHARACTER
menu += BASE_MENU_QUIT
var/default = null
var/result = input(src, "Who do you want to be today?", "Welcome to [world.name]!", default) in menu
switch(result)
if (0, BASE_MENU_QUIT)
del(src)
return
if (BASE_MENU_CREATE_CHARACTER)
client.base_NewMob()
del(src)
return
if (BASE_MENU_DELETE_CHARACTER)
DeleteCharacter()
ChooseCharacter()
return
var/mob/Mob = client.base_LoadMob(result)
if (Mob)
del(src)
else
ChooseCharacter()
proc/DeleteCharacter()
var/list/available_char_names = client.base_CharacterNames()
var/list/menu = new()
menu += available_char_names
menu += BASE_MENU_CANCEL
menu += BASE_MENU_QUIT
var/default = null
var/result = input(src, "Which character do you want to delete?", "Deleting character", default) in menu
switch(result)
if (0, BASE_MENU_QUIT)
del(src)
return
if (BASE_MENU_CANCEL)
return
client.base_DeleteMob(result)
ChooseCharacter()
return
client
var/tmp/savefile/_base_player_savefile
New()
if (base_autoload_character)
base_ChooseCharacter()
base_Initialize()
return
return ..()
Del()
if (base_autosave_character)
base_SaveMob()
if (base_autodelete_mob)
del(mob)
return ..()
proc/base_PlayerSavefile()
if (!_base_player_savefile)
var/start = 1
var/end = 2
var/first_initial = copytext(ckey, start, end)
var/filename = "players/[first_initial]/[ckey].sav"
_base_player_savefile = new(filename)
return _base_player_savefile
proc/base_FirstTimePlayer()
var/mob/BaseCamp/FirstTimePlayer/first_mob = new()
first_mob.name = key
first_mob.gender = gender
mob = first_mob
return first_mob.FirstTimePlayer()
proc/base_ChooseCharacter()
base_SaveMob()
var/mob/BaseCamp/ChoosingCharacter/chooser
var/list/names = base_CharacterNames()
if (!length(names))
var/result = base_FirstTimePlayer()
if (!result)
del(src)
return
chooser = new()
mob = chooser
return
if (base_num_characters_allowed == 1)
base_LoadMob(names[1])
return
chooser = new()
mob = chooser
return
proc/base_CharacterNames()
var/list/names = new()
var/savefile/F = base_PlayerSavefile()
F.cd = "/players/[ckey]/mobs/"
var/list/characters = F.dir
var/char_name
for (var/entry in characters)
F["[entry]/name"] >> char_name
names += char_name
return names
proc/base_NewMob()
base_SaveMob()
var/mob/new_mob
new_mob = new world.mob()
new_mob.name = key
new_mob.gender = gender
mob = new_mob
_base_player_savefile = null
return new_mob
proc/base_SaveMob()
if (!mob || !mob.base_save_allowed)
return
if (base_save_verbs)
mob.base_saved_verbs = mob.verbs
var/savefile/F = base_PlayerSavefile()
var/mob_ckey = ckey(mob.name)
var/directory = "/players/[ckey]/mobs/[mob_ckey]"
F.cd = directory
F["name"] << mob.name
F["mob"] << mob
_base_player_savefile = null
proc/base_LoadMob(char_name)
var/mob/new_mob
var/char_ckey = ckey(char_name)
var/savefile/F = base_PlayerSavefile()
_base_player_savefile = null
F.cd = "/players/[ckey]/mobs/"
var/list/characters = F.dir
if (!characters.Find(char_ckey))
world.log << "[key]'s client.LoadCharacter() could not locate character [char_name]."
mob << "Unable to load [char_name]."
return null
F["[char_ckey]/mob"] >> new_mob
if (new_mob)
mob = new_mob
new_mob.base_InitFromSavefile()
if (base_save_verbs && new_mob.base_saved_verbs)
for (var/item in new_mob.base_saved_verbs)
new_mob.verbs += item
return new_mob
return null
proc/base_DeleteMob(char_name)
var/char_ckey = ckey(char_name)
var/savefile/F = base_PlayerSavefile()
F.cd = "/players/[ckey]/mobs/"
F.dir.Remove(char_ckey)
Please Help me decipher this!!