#define PLAYER 0
#define WIZ 1
#define ADMIN 2
mapping privs;
void restore_me( void ) {
restore_object( "/kernel/daemons/data/secure_d.o" );
}
void save_me( void ) {
save_object( "/kernel/daemons/data/secure_d.o" );
}
void create( void ) {
/* privs = ([ "fudge" : ADMIN ]); */
privs = ([]);
restore_me();
}
void make_wizard( string name ) {
object player;
if( previous_object()->base_name() != "/kernel/cmds/admin/mkwiz" ) {
write( "Hey! No cheating!\n" );
}
name = lowercase( name );
if( file_exists( "/data/players/" + name + ".o" ) ) {
privs[name] = WIZ;
player = USER_D->find_player( name );
if( player == 0 ) {
/* Player not active now, load him in and add his paths. */
player = clone_object( "/std/player" );
player->set_name( name );
player->restore_me();
player->add_cmd_path( "/cmds/wiz" );
player->save_me();
destruct_object( player );
} else {
player->add_cmd_path( "/cmds/wiz" );
player->save_me();
}
write( capitalize( name ) + " has been made a wizard." );
save_me();
} else {
write( "No such player.\n" );
}
}
void make_admin( string name ) {
object player;
name = lowercase( name );
if( file_exists( "/data/players/" + name + ".o" ) ) {
privs[name] = ADMIN;
player = USER_D->find_player( name );
if( player == 0 ) {
/* Player not active now, load him in and add his paths. */
player = clone_object( "/std/player" );
player->set_name( name );
player->restore_me();
player->add_cmd_path( "/cmds/wiz" );
player->add_cmd_path( "/kernel/cmds/admin" );
player->save_me();
destruct_object( player );
} else {
player->add_cmd_path( "/cmds/wiz" );
player->add_cmd_path( "/kernel/cmds/admin" );
player->save_me();
}
write( capitalize( name ) + " has been made an admin." );
save_me();
} else {
write( "No such player.\n" );
}
}
int query_admin( string name ) {
if( privs[name] == ADMIN )
return 1;
return 0;
}
int query_wiz( string name ) {
if( privs[name] == ADMIN || privs[name] == WIZ )
return 1;
return 0;
}
int query_priv( string name ) {
if( map_sizeof(privs) == 0 )
make_admin( name );
return( privs[name] );
}