static mapping users; void create( void ) { users = ([ ]); } void add_user( string name, object user ) { users += ([ name : user ]); } void remove_user( string name, object user ) { users[name] = 0; } object *query_users( void ) { return( map_values( users ) ); } string *query_user_names( void ) { return( map_indices( users ) ); } object find_user( string name ) { string *names; int i; int found; found = 0; names = map_indices( users ); for( i=0; i < sizeof( names ); i++ ) { if( name == names[i] ) { found = 1; break; } } if( found == 1) return( users[name] ); else return( 0 ); } object find_player( string name ) { object ob; ob = find_user( lowercase(name) ); if( ob != 0 ) return( ob->query_player() ); return( ob ); } object *query_players( void ) { object *usr; int i; object *players; usr = query_users(); players = ({ }); for (i=0; i < sizeof (usr); i++) { players += ({ usr[i]->query_player() }); } return players; } object *query_wizards( void ) { object *usr; int i; object *wizards; usr = query_users(); wizards = ({ }); for (i=0; i < sizeof (usr); i++) { if (SECURE_D->query_wiz(usr[i]->query_player()->query_name()) > 0) { wizards += ({ usr[i]->query_player() }); } } return wizards; }