#include "copyright.h" #include "os.h" #include "db.h" #include "config.h" #include "interface.h" #include "externs.h" #ifndef PLAYER_LIST /* don't use this, it's expensive */ /* maybe soon we'll put in a hash table */ dbref lookup_player (const char *name) { dbref i; for (i = 0; i < db_top; i++) { if (Typeof (i) == TYPE_PLAYER && db[i].name && !string_compare (db[i].name, name)) return i; } return NOTHING; } #endif /* PLAYER_LIST */ dbref connect_player (const char *name, const char *password) { dbref player; if ((player = lookup_player (name)) == NOTHING) return NOTHING; if (db[player].password && *db[player].password && strcmp (db[player].password, password)) return NOTHING; return player; } dbref create_player (const char *name, const char *password) { dbref player; if (!ok_player_name (name) || !ok_password (password)) return NOTHING; /* else he doesn't already exist, create him */ player = new_object (); /* initialize everything */ db[player].name = alloc_string (name); db[player].location = PLAYER_START; db[player].exits = PLAYER_START; /* home */ db[player].owner = player; db[player].flags = TYPE_PLAYER; db[player].password = alloc_string (password); /* link him to PLAYER_START */ PUSH (player, db[PLAYER_START].contents); #ifdef PLAYER_LIST add_player (player); #endif /* PLAYER_LIST */ return player; } void do_password (dbref player, const char *old, const char *newobj) { if (!db[player].password || strcmp (old, db[player].password)) { notify (player, "Sorry"); } else if (!ok_password (newobj)) { notify (player, "Bad new password."); } else { free ((void *) db[player].password); db[player].password = alloc_string (newobj); notify (player, "Password changed."); } }